iosjson非标准

| 标准员 |

【www.guakaob.com--标准员】

IOS开发---菜鸟学习之路--(三)-数据解析
iosjson非标准 第一篇

第三篇

上一篇我们讲了如何通过NSURL类来获取数据,

这一章我们来讲下对于获取过来的数据如何解析.

好了直接进入正文吧.

正文:

上一篇讲了 我们获取过来的数据格式是JSON格式的

大家可以搜下对应JSON转换类就可以按照对应的内容进行数据转换了 我这边呢就提供一下我的转换方式

我目前搭建的项目用到的最多的就是UITableView

至于 怎么使用UITableView我之后会进行讲解的

我会在对应的.m文件中 定义 一个initListData方法.用来获取数据和解析数据 (还是直接贴代码吧)

-(void) initListData

{

GetWebInfo *getwebinfo=[GetWebInfo alloc];

NSString *myparameters=[[NSString alloc] initWithString:[NSString stringWithFormat:@"Method=getInfo&rows=4&page=%d",_page]];

getwebinfo.parameters=myparameters;

NSString *webReturnMessage=[getwebinfo dogetWebInfo];

NSData* jsonData=[webReturnMessage

dataUsingEncoding:NSUTF8StringEncoding];

NSArray *keys = [NSJSONSerialization

JSONObjectWithData:jsonData

options:NSJSONReadingMutableContainers error:nil];

allcount=[[keys valueForKey:@"total"] integerValue];

[self.list addObjectsFromArray:[keys valueForKey:@"rows"]]; }

首先 先定义一个上一篇 新建的GetWebInfo类

【iosjson非标准】

然后 组合参数...然后就是 调用 获取数据方法获取

【iosjson非标准】

然后讲String类型的数据encoding一下(现在看看突然感觉这一步貌似有点重复了..因为dogetwebinfo方法里貌似获取过来的就是NSData类型的了..) 然后是讲NSDATA类型的数据转换成NSArray类型的数据

然后我们就可以直接使用

[keys valueForKey:@"total"]

的方式 读取数据了

这边使用的时候大家可能会碰到 value 也是JSON数组的情况 .

那么就可以 [[keys valueForKey:@"xxx"] valueForKey:@"xx"]这样的方式 或者是下面这种方式

[[_list objectAtIndex:[indexPath row]] valueForKey:@"title"] 好了 是不是很简单啊? 好了 这 篇就讲这么多吧.

个人觉得看了这两章的话应该对网络数据获取以及传输应该就没有问题

下一篇会从如何构建一个登陆界面开始讲起 然后直至一步步完成一个简单的小项目

iOS5系统API和5个开源库的JSON解析速度测试
iosjson非标准 第二篇

iOS5新增了JSON解析的API,我们将其和其他五个开源的JSON解析库进行了解析速度的测试,下面是测试的结果。

我们选择的测试对象包含下面的这几个框架,其中NSJSONSerialization是iOS5系统新增的JSON解析的API,需要iOS5的环境,如果您在更低的版本进行测试,应该屏蔽相应的代码调用。

- [SBJSON (json-framework)](

- [TouchJSON (from touchcode)](

- [YAJL (objective-C bindings)](

- [JSONKit](https://github.com/johnezang/JSONKit)

- [NextiveJson](https://github.com/nextive/NextiveJson)

-[NSJSONSerialization](

我们选择了四个包含json格式的数据的文件进行测试。每一个文件进行100的解析动作,对解析的时间进行比较。

工程包含以下的文件和框架:

这是外面调用的代码,设置读取的json文件和计算的次数,每一个函数在进行对应框架API的解析代码:【iosjson非标准】

将上面的数据整理成下面的图表:

测试的结果显示,系统的API的解析速度最快,我们在工程项目中选择使用,也是应用较为广泛的SBJSON的解析速度为倒数第二差,令我大跌眼镜。

与系统API较为接近的应该是JSONKit。

这里没有对API的开放接口和使用方式进行比较,若单纯基于以上解析速度的测试:

1:iOS5应该选择系统的API进行

2:不能使用系统API的应该选择JSONKit

【无限互联学员作品】iOS开发之AFNetWorking使用方法
iosjson非标准 第三篇

【无限互联】iOS开发之AFNetWorking使用方法

一.概况简述

1.相关网络已有AFNetworking资源包的下载。

2.将资源包添加到工程文件里即可。

3.在所需工程文件中添加一行#import “AFNetworking”,便可使用。

4.AFNetworking通过网络来加载和处理结构化的数据,支持JSON,XML,Property List。

注:AFNetWorking使用了ARC ,所以在不使用ARC项目中使用时,对AFNetWorking的所有.m文件添加“-fobjc-arc”;

[objc] view plaincopyprint?

1. NSString *urlstring = @"https://api.weibo.com/2/statuses/home_timeline.json"; 2.【iosjson非标准】

3. NSDictionary *params =

【iosjson非标准】

@{@"access_token":@"2.00TSa6WDewTgPDfa63e0f0883oK2XE"}; //构造Request//请求参数的添加//请求参数的格式:/*JSON格式 : AFJSONRequestSerializer &拼接格式 : AFHTTPRequestSerializer*///创建请求参数的格式化对象 [objc] view plaincopyprint? 1. AFHTTPRequestSerializer *requestSerializer = [AFHTTPRequestSerializer serializer];

//构造Request

[objc] view plaincopyprint?

1. NSMutableURLRequest *request = [requestSerializer

requestWithMethod:@"GET" URLString:urlstring parameters:params error:nil]; //构造连接对象

[objc] view plaincopyprint?

1. AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; //设置返回数据的解析方式, 每一种解析方式对应了一个类

/**

JSON解析 : AFJSONResponseSerializer

XML解析: AFXMLParserResponseSerializer

*/

[objc] view plaincopyprint?

1. operation.responseSerializer = [AFJSONResponseSerializer

serializerWithReadingOptions:NSJSONReadingMutableContainers];

//设置数据请求成功、失败调用的block [objc] view plaincopyprint?

1. [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

2. 3. NSLog(@"responseObject = %@",responseObject);

4.

5. } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

6. NSLog(@"网络请求失败");

7. }];

//添加到队列,发送请求

[objc] view plaincopyprint?

1. queue = [[NSOperationQueue alloc] init];

2. [queue addOperation:operation];

(1)根据基本的URL构造除完整的一个URL,然后通过这个完整的URL获得一个NSURL对象,然后根据这个url获得一个NSURLRequest。【iosjson非标准】

(2)同AFJSONRequestOperation类,整合网络获取数据并对JSON进行解析。

(3)当请求成功,则运行成功块。将本例解析出来的微博数据从JSON变量转换为一个字典(dictionary),并将其储存在字典中。

(4)若运行出现问题,则运行失败块(failure block),如网络不可用,failure block被调用了,则将会通过一些错误信息打印出来。

//(1)获取请求管理对象 [objc] view plaincopyprint? 1. AFHTTPRequestOperationManager *manager =

[AFHTTPRequestOperationManager manager]; //(2)与GET请求相差不远,此下获取发送POST请求

[objc] view plaincopyprint?

1. NSString *urlstring = @"https://api.weibo.com/2/statuses/update.json";

2. NSDictionary *params = @{

3. @"status":@"tsdlsdfsdf",

4. @"access_token":@"2.00TSa6WDewTgPDfa63e0f0883oK2XE"

5. }; 6. [manager POST:urlstring parameters:params

success:^(AFHTTPRequestOperation *operation, id responseObject) {

7. NSLog(@"responseObject = %@",responseObject);

8. } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 9. NSLog(@"网络请求失败");

10. }];

ipad越来越慢怎么办
iosjson非标准 第四篇

热心网友 iPad随着安装越来越多的软件,空间就会越来越紧张,虽然最彻底的解决空间危机的办法是把iPad进行恢复出厂设置,但同时也会丢失一些重要的东西。一些人说Cydia有个垃圾清道夫iCleaner,但使用时可能会导致APP闪退等异常现象。效果并不好。那么,有没有安全且有效的办法呢?

程序删除不彻底,占据了大量iPad空间

首先我们得明确要对哪一部分空间动刀,可以删除哪些文件,不妨用iTools或者iTunes来查看iPad的状态,可以看到有个[其他"存储空间,这部分空间既不是照片,也不是音乐、视频、图书,或者程序,它存储的就是删除失败的文件、同步失败的影音、照片或者是下载中断的文件以及安装的PXL软件等等,正是我们要找的垃圾文件,/>
[其他"存储空间存储的多半是垃圾文件,特别是越狱过的iPad,通过Cydia或者其他第三方iOS管理程序如iTools来安装的软件的体积都会计入[其他"存储空间里

众所周知,一些iPad通过越狱,安装软件途径就很多了,比如说,某个APP在美国区上架更新了,但在中国区并没有上架或者更新,这时候就通过第三方途径安装最新的APP,比如苹果的ipa格式手动安装、Cydia的Deb格式安装、91助手的APP直接复制粘贴等,但问题在于,经常有人混合使用这些安装方式来安装不同版本的APP,就会发现通过第三方安装方式安装的程序,虽然会马上覆盖通过APP Store下载安装的软件,由于第三方的安装途径都是保存在这个路径:/private/var/stash/Applications。AiWRcO,而从官方安装途径则是在这里: /private/var/mobile/Applications,由于文件存放于不同的文件夹,如果卸载时不彻底,就会留下了垃圾文件,久而久之忘记后,就占据了宝贵的空间。

知道原理后,我们可以先试一试在桌面上卸载一个不想要的APP,然后看看是否有遗留下的相关临时文件夹。测试结果显示如果删除出错的话,会将软件压缩后存在这个路径:/User/Media/ApplicationArchives,/tmp文件夹是最近一次用iTunes同步或者删除失败的文件存在此处,/User/Media/PublicStaging 就是iTunes安装失败的文件所在处,这些临时文件都可以直接删除。

官方安装软件的路径:/private/var/mobile/Applications,可以通过修改日期或者子文件夹中的关键词来大致确定是什么软件,非官方的安装软件路径:/private/var/stash/Applications。AiWRcO

垃圾文件路径,一一查找各个击破

有些果粉,喜欢用91助手程序来安装APP,也有果粉使用Cydia安装的,这两个安装方式,偶尔会有安装或者下载失败的现象,就类似Windows中,安装包解压到C:\Users\用户名\AppData\Local\Temp,各种下载工具都有下载临时目录或者临时文件,如果安装或者下载被违法中断,那些临时文件不会被删除,从而变成了垃圾文件是一样的道理。ipad越来越慢怎么办。下面,笔者就针对存放垃圾较多的路径进行查找,并且删除不相关的垃圾文件。

首先,91助手程序安装失败后的遗留的垃圾文件在:

/private/var/mobile/Library/NetDragon/Applications,需要提醒的是,如果贸然删除某个文件夹,会导致程序无法打开,所以这个方法只能用来删除安装失败的程序。特别注意的是,使用91助手安装的软件都是PXL格式的,不能被iTunes或iTools等识别为[程序"存储空间而是[其他"存储空间。所以笔者不赞同使用91助手来安装程序。

而Cydia没下载完的东西都会保存在这个文件夹:/private/var/cache/apt/archives/partial,同91助手不同,Cydia会不定期删除下载的内容,且下载是断点续传的,如果选择重新安装的话,会继续断点续传,如果是重头开始下载的话,则自动删除没有下载的部分。若有不想要的东西,又没下载完成的deb文档,可以放心删除。

Cydia没下载完的东西都会保存在这个文件夹: /private/var/cache/apt/archives/partial ,此处为空白,因为笔者已经完全下载并安装了,Cydia会自动删除,否则没有下载完会有保留,如果种种原因不再下载了,就需要手工删除

另外,如果在其他电脑打开iTunes同步iPad的时候,这个电脑没有iPad已安装的软件,会提示你是否将软件同步到这台电脑,会压缩成zip格式的app软件包存放在这个文件夹,如果有,可以放心删除:/var/mobile/Media/ApplicationArchives

至于大家非常关心的同步失败的文件存在哪里呢?影音文件同步失败的话,存放在:/private/var/ mobile /Media/iTunes_Control/Music,都是以F开头的子文件夹,这些文件夹可以放心删除。同步照片也可能会失败,在iPad上看不到,但是照片实际就在iPad中占据了空间,存放在:/private/var/mobile/Media/Photos/Thumb,以及和Thumb同级的Photo Database文件。如果还要拷贝这些照片的话,可以把文件夹Thumb里的ithmb文件拷贝到电脑中,然后用Format Factory小程序来解压。要删除这种垃圾文件,只需删除Thumbs文件夹中以F开头的文件夹,然后重新同步即可。

最后要说明的是,[其他"存储空间并不会影响iPad的稳定性和使用,而且也没有办法彻底删除,就算你重新刷机,不安装任何软件和恢复备份的话,你也会发现[其他"存储空间占据了200MB空间,只有当超过1GB之后、并且感觉iPad运行越来越慢了的时候,才有必要采用本文方法检查。总之,按照本文清理空间后,你就会发现iPad较之前快了不少。

本文来源:http://www.guakaob.com/jianzhugongchengkaoshi/680904.html

    热门标签

    HOT