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

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

<方法1>

<方法2>运行时字典转模型,运行时自己一直很晕。不过还是整理下来,方便以后用。 这里直接创建了一个分类。
- 头文件代码
//
// NSObject+Model.h
// Chaos_G
// #import <Foundation/Foundation.h> @interface NSObject (Model) // 快速进行字典转模型
// mapDict:模型中的哪个属性名跟字典里面的key对应
+ (instancetype)objcWithDict:(NSDictionary *)dict mapDict:(NSDictionary *)mapDict; @end - .m文件代码
//
// NSObject+Model.m
// Chaos_G
// #import "NSObject+Model.h" #import <objc/runtime.h> @implementation NSObject (Model) + (instancetype)objcWithDict:(NSDictionary *)dict mapDict:(NSDictionary *)mapDict
{
id objc = [[self alloc] init]; // 遍历模型中属性
unsigned int count = ;
Ivar *ivars = class_copyIvarList(self, &count); for (int i = ; i < count; i++) {
Ivar ivar = ivars[i]; // 属性名称
NSString *ivarName = @(ivar_getName(ivar)); ivarName = [ivarName substringFromIndex:]; id value = dict[ivarName];
// 需要由外界通知内部,模型中属性名对应字典里面的哪个key
// ID -> id
if (value == nil) {
if (mapDict) {
NSString *keyName = mapDict[ivarName]; value = dict[keyName];
}
} [objc setValue:value forKeyPath:ivarName]; } return objc;
} @end
三、利用UIWebView显示网页,显示网页过程中通过路径加载网页的URL时,路径中包含汉字的处理方法
<方法1>

<方法2>

- UIWebView显示网页的具体代码如下
#import "ChaosHtmlViewController.h"
#import "ChaosHtml.h" @interface ChaosHtmlViewController () <UIWebViewDelegate> @end @implementation ChaosHtmlViewController - (void)viewDidLoad {
[super viewDidLoad]; self.navigationItem.title = _htmlItem.title; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStyleBordered target:self action:@selector(dismiss)]; // 取出webView 加载数据
UIWebView *web = (UIWebView *)self.view; web.delegate = self; // 设置web的代理,实现在web加载完成后,跳转到相应的网页标签 // 直接通过URLForResource:这个方法 获取的url就是将汉字处理过的URL
NSURL *url = [[NSBundle mainBundle] URLForResource:_htmlItem.html withExtension:nil]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; // web 加载请求,一步一步往上走,缺什么补什么
[web loadRequest:request];
} - (void)dismiss
{
[self dismissViewControllerAnimated:YES completion:nil];
} // 在加载view的方法里面,将控制器的view改成UIWebView
- (void)loadView
{
UIWebView *web = [[UIWebView alloc] initWithFrame:ChaosScreenBounds]; self.view = web;
}
#pragma mark - webView的代理方法
// 执行JavaScript 必须在web加载完成的时候执行
- (void)webViewDidFinishLoad:(UIWebView *)webView
{ NSString *javaStr = [NSString stringWithFormat:@"window.location.href = '#%@';",_htmlItem.ID]; [webView stringByEvaluatingJavaScriptFromString:javaStr];
} @end
iOS彩票项目--第七天,初次读取json数据、KVC转模型技巧、运行时字典转模型以及初步对显示网页的操作并且跟踪标签的更多相关文章
- 当向后台插入或读取JSON数据遇见回车时
今天在项目中发现.当插入或读取JSON数据时遇见回车符.返回JSON数据格式时会报错(firebug里体现为乱码),百度了一下发现JSON不支持字符串里存在回车! 解决的方法: 在向接口插入带json ...
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
EF+LINQ事物处理 在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...
- Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法
前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...
- ajax读取json数据
首先建立json.txt文件 { "programmers": [ { "firstName": "Brett", "lastNa ...
- 在MVC中动态读取JSON数据创建表格
//使用getJSON // ("@Url.Action("GetAllUsers","User")" ,json文件的路径.也可以是 /M ...
- js读取json数据(php传值给js)
<?php $array =array('fds','fdsa','fdsafasd'); // json_encode($array); ?> <html> <hea ...
- Javascript实例技巧精选(6)—滚动鼠标中键读取Json数据分页显示网页内容
>>点击这里下载完整html源码<< 截图如下: 滚动鼠标中键读取Json数据分页显示网页内容,关键的Javascript如下: <script type="t ...
- 关于跨域读取json数据我的理解
这两天在做关于读取json数据的插件,想用getJSON读取数据: $.getJSON(http://www.xxxx.com/Titles.js, function (data) { console ...
- js循环读取json数据,将读取到的数据用js写成表格
①js循环读取json数据的方式: var data=[{"uid":"2688","uname":"*江苏省南菁高级中学 022 ...
随机推荐
- 计算机中的颜色XIV——快速变换颜色的V分量
基本知识回顾: 计算机中的颜色Color,用RGB模式存储(用R.G.B三个分量表示颜色,每个分量的范围是0—255). 而计算机中的颜色除了用RGB模式表示以外,常见的还有HSV模式(或者是HSB. ...
- LeetCode题解-----Majority Element II 摩尔投票法
题目描述: Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The a ...
- LeetCode题解-----Maximum Gap
题目描述: Given an unsorted array, find the maximum difference between the successive elements in its so ...
- ZBrush中的笔刷该怎样制作
ZBrush给用户提供了许多的常用笔刷,我们可以使用这些笔刷自由地发挥创意.为了让雕刻速度更快,模型刻画更细致我们常常也会创建自定义笔刷,本文教您在ZBrush中制作笔刷. 查看更多内容请直接前往:h ...
- hdu 5833 Zhu and 772002 ccpc网络赛 高斯消元法
传送门:hdu 5833 Zhu and 772002 题意:给n个数,每个数的素数因子不大于2000,让你从其中选则大于等于1个数相乘之后的结果为完全平方数 思路: 小于等于2000的素数一共也只有 ...
- Update和LateUpdate的区别
LateUpdate晚于所有Update执行 在圣典里LateUpdate被解释成一句话:LateUpdate是在所有Update函数调用后被调用.这可用于调整脚本执行顺序. 当物体在Update里移 ...
- 错题802-java
1.list是一个ArrayList的对象,哪个选项的代码填到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?() Iterator it = ...
- 诺顿ghost备份恢复系统或分区
一 诺顿ghost简介 1,可以克隆分区 也可以克隆磁盘 2,克隆成img或磁盘内容对刻 3,磁盘分区--img---磁盘分区 磁盘---磁盘 二 操作步骤 对刻好的系统 整体思路: 1,A是模板 ...
- 史上最全Html与CSS布局技巧
单列布局水平居中水平居中的页面布局中最为常见的一种布局形式,多出现于标题,以及内容区域的组织形式,下面介绍四种实现水平居中的方法(注:下面各个实例中实现的是child元素的对齐操作,child元素的父 ...
- oracle学习之表空间
一.oracle当中的dual表 注意:sql语句一定要有一个 : 结尾,不然会报错. Oracle数据库内种特殊表DualDual表Oracle实际存表任何用户均读取用没目标表SelectDual表 ...