iOS彩票项目--第七天,初次读取json数据、KVC转模型技巧、运行时字典转模型以及初步对显示网页的操作并且跟踪标签

一、初次读取json数据

二、KVC转模型技巧,这里的技巧主要解决的是字典中的key 与 模型中有的属性对应不起来的时候 的解决办法

    

  <方法1>

<方法2>运行时字典转模型,运行时自己一直很晕。不过还是整理下来,方便以后用。 这里直接创建了一个分类。

  • 头文件代码

     1 //
     2 //  NSObject+Model.h
     3 //  Chaos_G
     4 //
     5
     6 #import <Foundation/Foundation.h>
     7
     8 @interface NSObject (Model)
     9
    10 // 快速进行字典转模型
    11 // mapDict:模型中的哪个属性名跟字典里面的key对应
    12 + (instancetype)objcWithDict:(NSDictionary *)dict mapDict:(NSDictionary *)mapDict;
    13
    14 @end
  • .m文件代码

     1 //
     2 //  NSObject+Model.m
     3 //  Chaos_G
     4 //
     5
     6 #import "NSObject+Model.h"
     7
     8 #import <objc/runtime.h>
     9
    10 @implementation NSObject (Model)
    11
    12 + (instancetype)objcWithDict:(NSDictionary *)dict mapDict:(NSDictionary *)mapDict
    13 {
    14     id objc = [[self alloc] init];
    15
    16
    17     // 遍历模型中属性
    18     unsigned int count = 0;
    19     Ivar *ivars = class_copyIvarList(self, &count);
    20
    21     for (int i = 0 ; i < count; i++) {
    22         Ivar ivar = ivars[i];
    23
    24         // 属性名称
    25         NSString *ivarName = @(ivar_getName(ivar));
    26
    27
    28         ivarName = [ivarName substringFromIndex:1];
    29
    30         id value = dict[ivarName];
    31         // 需要由外界通知内部,模型中属性名对应字典里面的哪个key
    32         // ID -> id
    33         if (value == nil) {
    34             if (mapDict) {
    35             NSString *keyName = mapDict[ivarName];
    36
    37             value = dict[keyName];
    38             }
    39         }
    40
    41
    42             [objc setValue:value forKeyPath:ivarName];
    43
    44
    45     }
    46
    47
    48     return objc;
    49 }
    50
    51 @end

三、利用UIWebView显示网页,显示网页过程中通过路径加载网页的URL时,路径中包含汉字的处理方法

  <方法1>

  <方法2>

  • UIWebView显示网页的具体代码如下
 1 #import "ChaosHtmlViewController.h"
 2 #import "ChaosHtml.h"
 3
 4 @interface ChaosHtmlViewController () <UIWebViewDelegate>
 5
 6 @end
 7
 8 @implementation ChaosHtmlViewController
 9
10 - (void)viewDidLoad {
11     [super viewDidLoad];
12
13     self.navigationItem.title = _htmlItem.title;
14
15     self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStyleBordered target:self action:@selector(dismiss)];
16
17     // 取出webView 加载数据
18     UIWebView *web = (UIWebView *)self.view;
19
20     web.delegate = self; // 设置web的代理,实现在web加载完成后,跳转到相应的网页标签
21
22     // 直接通过URLForResource:这个方法  获取的url就是将汉字处理过的URL
23     NSURL *url = [[NSBundle mainBundle] URLForResource:_htmlItem.html withExtension:nil];
24
25     NSURLRequest *request = [NSURLRequest requestWithURL:url];
26
27     // web 加载请求,一步一步往上走,缺什么补什么
28     [web loadRequest:request];
29 }
30
31 - (void)dismiss
32 {
33     [self dismissViewControllerAnimated:YES completion:nil];
34 }
35
36 // 在加载view的方法里面,将控制器的view改成UIWebView
37 - (void)loadView
38 {
39     UIWebView *web = [[UIWebView alloc] initWithFrame:ChaosScreenBounds];
40
41     self.view = web;
42 }
43 #pragma mark - webView的代理方法
44 // 执行JavaScript  必须在web加载完成的时候执行
45 - (void)webViewDidFinishLoad:(UIWebView *)webView
46 {
47
48     NSString *javaStr = [NSString stringWithFormat:@"window.location.href = ‘#%@‘;",_htmlItem.ID];
49
50     [webView stringByEvaluatingJavaScriptFromString:javaStr];
51 }
52
53 @end
时间: 2024-10-03 03:04:10

iOS彩票项目--第七天,初次读取json数据、KVC转模型技巧、运行时字典转模型以及初步对显示网页的操作并且跟踪标签的相关文章

iOS开发项目篇—32添加上拉刷新数据

iOS开发项目篇—32添加上拉刷新数据 一.简单说明 图片示意 思路:可以自定义一个view(示意xib),在view中添加一个label和菊花,指示状态.把这个view设置为tableView的底部视图. 二.实现过程 1.新建一个类和xib,关联 (1)创建一个类,让其继承自UIView (2)创建一个xib文件,用来定义上拉提示框 (3)定义的xib文件,把类和xib文件进行关联 2.实现代码: YYlaodStatusesFooter.h文件 1 // 2 // YYlaodStatus

当向后台插入或读取JSON数据遇见回车时

今天在项目中发现,当插入或读取JSON数据时遇见回车符,返回JSON数据格式时会报错(firebug里体现为乱码),百度了一下发现JSON不支持字符串里存在回车! 解决办法: 在向接口插入带json格式的数据之前,将回车等特殊符合替换成json接受的符号: 在向接口请求读取json格式的数据时,将回车等特殊符合替换成json接受的符号: 发送到后台 myPostStr.replace(/[\r\n]/g,"|"); //将myStr字符串里的回车和换行符替换成"|"

Android 读取 json 数据(遍历jsonarray和jsonboject)-FenGKun

Android 读取 json 数据(遍历jsonarray和jsonboject) public String getJson(){ String jsonString = "{\"FLAG\":\"flag\",\"MESSAGE\":\"SUCCESS\",\"name\":[{\"name\":\"jack\"},{\"name\"

pythhon_如何读取json数据

案例: 在web应用中常常用到json数据进行传输数据,本质上是字典类型数据转换成字符串,通过字符串进行网页传输,然后把接收到的字符串转换成字典类似数据 需求:实现字典转换成字符串,字符串转换成字典数据类型,写入文件 如何做? 明确dumps和dump的区别,dump的接口是文件,直接写入文件,dumps把对应的数据类型转换成字符串,loads 和dumps相反,load直接从文件中读取文件并把数据转换成对应的数据类型 先进行数据转换,字符串作为中间桥梁 #!/usr/bin/python3 i

Java解析(读取)Json数据

以前看过书上说,XML是web service间传输信息的标准格式吧,就看了看XML.最近在做个网站,又说是有了JSON,第一回听说就看了看,总结总结一下. 1.JSON介绍 JSON比XML简单,主要体现在传输相同信息的情况下,文件的大小不同. JSON只用于传输信息,XML还可以用于配置文件的使用. JSON中的符号主要有: " , [ {: 2.JSON中的数组和对象 2.1数组(JSONArray) 数组用一对[],表示存放的是一般的数组数据. 如:["11",&qu

FullCalendar应用——读取JSON数据

开发者可以使用FullCalendar创建强大的日历日程应用,FullCalendar提供了丰富的选项设置和方法调用,使得开发者可以轻松的创建各种功能的日历程序.本文将结合实例使用PHP读取MySQl数据,显示在FullCalendar日历中. 查看演示DEMO 根据FullCalendar日历插件说明文档中的介绍,日历主体事件数据的来源有三,一是直接以javascript数组的形式显示日历事件,二是获取JSON数据形式显示日历事件,三是函数回调的形式显示日历数据,三种调用数据的方式各有所用之处

js读取json数据

{ "code": 0, "msg": null, "data": { "pageNum": 1, "pageSize": 5, "total": 1, "pages": 1, "list": [ { "pid": "0ccddaed355211e79954005056b233c9", "secti

利用Python读取json数据并求数据平均值

要做的事情:一共十二个月的json数据(即12个json文件),json数据的一个单元如下所示.读取这些数据,并求取各个(100多个)城市年.季度平均值. { "time_point": "2014-01", "area": "***", "aqi": "71", "pm2_5": "47", "pm10": "69&

MS SQL读取JSON数据

前面有一篇<在SQL中直接把查询结果转换为JSON数据>https://www.cnblogs.com/insus/p/10905566.html,是把table转换为json. 现反过来,当SQL从前端接收过来的数据是JSON的话,需要把它转换为TABLE.在MS SQL Server 2016有一个方法,OPENJSON. DECLARE @json_text NVARCHAR(MAX) SET @json_text = N' { "DB Type": [ {"