什么意思(_NSCFString *)@“<null>”

时间:2016-02-12 16:37:25

标签: ios xcode variables null

在我的应用中,我获取了一些在线数据,需要解析它。 有时,“变量视图”中会显示一个值

(_NSCFSTring *) @"<null>"

我一直在模拟器和iOS9中的设备上成功运行我的代码。 我用了

[myString containsString:@"null"]; 

在这种情况下采取行动。感觉不好,但它确实奏效了。 现在我正在测试iOS7中的旧设备,这不太宽容:它崩溃了。

所以,我试过

[myString isKindOfClass:[NSNull class]];

但这似乎不适用。

所以,基本上,我在这里缺乏知识,我希望你们中的一个能够解释这一切是什么。

谢谢!

1 个答案:

答案 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来解析服务器数据时检查值的类型(例如NSNumberNSString)。