在我的应用中,我获取了一些在线数据,需要解析它。 有时,“变量视图”中会显示一个值
(_NSCFSTring *) @"<null>"
我一直在模拟器和iOS9中的设备上成功运行我的代码。 我用了
[myString containsString:@"null"];
在这种情况下采取行动。感觉不好,但它确实奏效了。 现在我正在测试iOS7中的旧设备,这不太宽容:它崩溃了。
所以,我试过
[myString isKindOfClass:[NSNull class]];
但这似乎不适用。
所以,基本上,我在这里缺乏知识,我希望你们中的一个能够解释这一切是什么。
谢谢!
答案 0 :(得分:1)
@"<null>"
是将[NSNull null]
转换为NSString
的结果,例如使用:
id value = [NSNull null];
NSString *stringValue = [value description];
请注意,stringValue
是一个字符串,因此条件[myString isKindOfClass:[NSNull class]]
将为false。
在将值转换为NSNull
之前,您必须先检查NSString
。
一种典型的解决方案是将NSNull
转换为nil
,例如在NSDictionary
上声明一个类别方法:
- (id)betterObjectForKey:(NSString *)key {
id value = [self objectForKey:key];
if (value == [NSNull null]) {
return nil;
}
return value;
}
然后使用betterObjectForKey:
代替objectForKey:
。我个人使用variant来解析服务器数据时检查值的类型(例如NSNumber
或NSString
)。