0713JSONXML解压缩
1、模型、字典、JSON(02-json解析01)
网络请求下来的json数据在IOS里以NSData格式返回,这个时候需要转为字典
NSData→字典→模型
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
//然后字典再转为模型
NSObject *model = [YYModel xxxx:dict]
反过来有时候需要上传的参数格式是JSON字符串
字典→NSData→字符串
//这个data实际上就是JSON
NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil];
//这个str就是JSON字符串或者说这里就是将字典转为字符串
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
2、关于+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error的NSJSONReadingOptions三个枚举字的意思(04-json解析03)
- NSJSONReadingOptions
- NSJSONReadingMutableContainers = (1UL << 0)
- 创建出来的数组和字典就是可变
- NSJSONReadingMutableLeaves = (1UL << 1)
- 数组或者字典里面的字符串是可变的
- NSJSONReadingAllowFragments
- 允许解析出来的对象不是字典或者数组,比如直接是字符串或者NSNumber
- NSJSONReadingMutableContainers = (1UL << 0)
3、设计一个框架需要考虑的问题(05-json解析04-字典转模型框架)
- 侵入性
- 侵入性大意味着很难离开这个框架
- 易用性
- 比如少量代码实现N多功能
- 扩展性
- 很容易给这个框架添加新框架
4、XML解析(07-xml解析02-nsxmlparser)
- NSXMLParser主要是运用那四个代理
- GDataXML没有集成cocopods,只能手动导入,而且还要在两个地方设置动态库,用的话就是从跟节点一层一层去找
5、const和宏的区别(11-大文件下载)
const修饰的是常量,就是说编译的时候就能确定值的量,宏可以定义变量,由程序运行时再赋值
6、文件的解压缩(13-解压缩02)
基本上用到的是三方框架ZipArchive及其OC封装SSZipArchive
7、上传(14-文件上传01-思路)
上传是最特殊的一种http请求,他的请求体有着特定的格式,下图是一个上传文件和账户名的完整请求体
说明:以两个下划线“--”+自定义字符串开始标志一个文件参数或者非文件参数,以“--”+自定义字符串+“--”标志传参结束,文件参数必须设置Content-Type,期间的空格也一个不能多不能少
一定要设置请求头的Content-Type和MIMEType
[request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", XMGBoundary] forHTTPHeaderField:@"Content-Type"];
如何在程序中获得MIMEType(也可在敲代码手动查)
- (NSString *)getMIMEType:(NSString *)file
{
NSURLResponse *response = nil;
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:file]];
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
return response.MIMEType;
}
网友评论