bir*_*rda 22 objective-c ios afnetworking
我们在我们的移动应用程序中使用AFNetworking,很多时候我们会让JSON返回某些值为null.
我厌倦了做以下事情.
if ([json objectForKey:@"nickname"] isKindOfClass:[NSNull class]]) {
nickname = nil;
} else {
nickname = [json objectForKey:@"nickname"];
}
Run Code Online (Sandbox Code Playgroud)
如果JSON响应中的值为null,我们可以做些什么来使AFNetworking自动将对象设置为nil或数字为0?
DV_*_*DV_ 30
您可以在AFHTTPSessionManager响应序列化程序中将标志setRemovesKeysWithNullValues设置为YES:
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithBaseURL:url sessionConfiguration:config];
AFJSONResponseSerializer *serializer = [AFJSONResponseSerializer serializer];
[serializer setRemovesKeysWithNullValues:YES];
[manager setResponseSerializer:serializer];
Run Code Online (Sandbox Code Playgroud)
Jos*_*ell 21
这不太可能,因为字典不能包含nil作为密钥的对象.必须完全省略密钥以获得您想要的行为,这本身就是不受欢迎的.
假设您无法控制所接收的数据,并且不知道JSON中存在哪些键.如果要将它们全部列出,或者将它们显示在表中,并且将空对象的键留在字典之外,则会看到不正确的列表.
NSNull 是Cocoa集合的"无"占位符,这就是它在这种情况下使用的原因.
您可以使用宏使您的输入更容易:
#define nilOrJSONObjectForKey(JSON_, KEY_) [[JSON_ objectForKey:KEY_] isKindOfClass:[NSNull class]] ? nil : [JSON_ objectForKey:KEY_]
nickname = nilOrJSONObjectForKey(json, @"nickname");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5760 次 |
| 最近记录: |