美文网首页
06-网络(2)

06-网络(2)

作者: cdd48b9d36e0 | 来源:发表于2017-02-17 10:05 被阅读11次

    0713JSONXML解压缩

    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

    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;
    }
    

    相关文章

      网友评论

          本文标题:06-网络(2)

          本文链接:https://www.haomeiwen.com/subject/jzykwttx.html