iOS处理接口返回null,属性名为id等情况

本文介绍了如何在iOS开发中使用AFNetworking设置JSON响应序列化器以处理返回的null值,并利用MJExtension处理模型中的null值和id关键字映射问题。
摘要由CSDN通过智能技术生成

后台返回null

1、AFNetWorking处理

 AFJSONResponseSerializer *response = [AFJSONResponseSerializer serializer];
 manager.responseSerializer = response;//申明返回的结果是json类型
 response.removesKeysWithNullValues = YES;//此方法用来删除value值为null的键值对

2、MJExtension处理

在自己的模型中实现代理MJKeyValue中的方法- (id)mj_newValueFromOldValue:(id)oldValue property:(MJProperty *)property;

- (id)mj_newValueFromOldValue:(id)oldValue property:(MJProperty *)property {
        if (oldValue == NULL) {
            if ([property.type.typeClass isKindOfClass:[NSString class]]) {
                  return @"";
              } else if ([property.type.typeClass isKindOfClass:[NSArray class]]) {
                  return @[];
              } else if ([property.type.typeClass isKindOfClass:[NSDictionary class]]) {
                  return @{};
              }
         }
        return oldValue;
}

后台返回中有iOS关键字id

在自己的模型中实现代理MJKeyValue中的方法+ (NSDictionary *)mj_replacedKeyFromPropertyName

+ (NSDictionary*)mj_replacedKeyFromPropertyName {
    return @{@"uid":@"id"};
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS 中,你可以使用以下两种方式将接口返回的数据缓存到本地: 1. 使用 NSUserDefaults 如果你的数据量比较小,可以将接口返回的数据存储到 NSUserDefaults 中。NSUserDefaults 是一个轻量级的本地存储工具,可以用来存储简单的用户配置信息和小数据量的数据。 你可以将接口返回的数据转换成 NSData 类型,然后存储到 NSUserDefaults 中。示例代码如下: ```objective-c // 将接口返回的数据转换成 NSData 类型 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:responseObject]; // 存储到 NSUserDefaults 中 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:data forKey:@"cachedData"]; [defaults synchronize]; ``` 在读取数据时,你可以使用如下代码: ```objective-c // 从 NSUserDefaults 中读取数据 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSData *data = [defaults objectForKey:@"cachedData"]; // 将 NSData 类型转换成 NSDictionary 类型 NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:data]; ``` 2. 使用文件缓存 如果你的数据量比较大,可以将接口返回的数据存储到文件中。在读取数据时,你可以从文件中读取数据。示例代码如下: ```objective-c // 将接口返回的数据转换成 NSData 类型 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:responseObject]; // 存储到文件中 NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]; NSString *filePath = [cachePath stringByAppendingPathComponent:@"cachedData"]; BOOL success = [data writeToFile:filePath atomically:YES]; if (!success) { NSLog(@"Error writing to file"); } ``` 在读取数据时,你可以使用如下代码: ```objective-c // 从文件中读取数据 NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]; NSString *filePath = [cachePath stringByAppendingPathComponent:@"cachedData"]; NSData *data = [NSData dataWithContentsOfFile:filePath]; // 将 NSData 类型转换成 NSDictionary 类型 NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:data]; ``` 注意:无论你选择哪种方式,都需要注意缓存的有效期。在读取数据时,你需要判断缓存是否过期,如果过期了,就需要重新从接口获取数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值