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 ...
随机推荐
- MIT jos 6.828 Fall 2014 训练记录(lab 3)
注:源代码参见我的github: https://github.com/YaoZengzeng/jos Part A : User Environments and Exception Handlin ...
- Mybatis框架_part1
mybatis介绍 mybatis就是一个封装了jdbc的持久层框架,它的前身是ibatis.Mybatis与hibernate一样都是持久层框架,但是它与hibernate不同的是,它不是一个完全的 ...
- jquery 实现邮箱输入自动提示功能:(二)
上篇文章写到了一个不错的jquery实现邮箱输入自动提示功能,发现还有一个不错的自动提示插件: 先展示结果如图: html代码: <center> <h1>输入邮箱试试!< ...
- Android应用中菜单(Menu)的位置显示问题
http://blog.csdn.net/songjinshi/article/details/17381245 注意:为了适配4.0菜单能够横向显示,建议在activity中添加android:th ...
- 工作者队列原理解析(后台writeback)
每一个CPU都会有两个(或者一个?)kwoker线程. kwoker线程,说白了就是尽量减少进程的数目,为了什么呢?因为线程数据太多的话,调度的成本比较高,占用太多的系统资源,所以这里是进程的一个简化 ...
- 微软职位内部推荐-Principal Development Lead
微软近期Open的职位: Job Title: Principal Development Lead Work Location: Suzhou, China This is a once in a ...
- Use CLR Profiler
Use CLR Profiler 第一次翻译对我而言比较长的E文,有很多不足之处,请见谅.(个人的习惯GC又做了名词又做了名词) 原文:http://msdn.microsoft.com/en-us/ ...
- [QoS]cisco3560限速配置案例-收集于网工泡泡
网络中常用到这些:CISCO和H3C-MAC过滤+端口限速+端口镜像+端口隔离 不同的方式不同的思想:嘎嘎 其他各个厂商的限速链接:http://pan.baidu.com/s/1hrIMoSG 密码 ...
- java String.getBytes()编码问题——String.getBytes(charset)
String的getBytes()方法是得到一个字串的字节数组,这是众所周知的.但特别要注意的是,本方法将返回该操作系统默认的编码格式的字节数组.如果你在使用这个方法时不考虑到这一点,你会发现在一个平 ...
- [转]的C#实现三维数字地形漫游(基于Irrlicht)
马省轩 任丽娜 摘 要:本文采用C#编程语言,利用Irrlicht三维图形引擎实现了三维数字地形的漫游.为三维数字地形显示提供了较易实现的解决方案. 关键词:C# 高度图 Irrlicht引擎 ...