2016-02-12 32 views
-1

在我的应用程序,我取了一些在线数据,并且需要分析它。 有时候,有可能出现在变量的值查阅什么手段(_NSCFString *)@“<null>”

(_NSCFSTring *) @"<null>" 

我已经在模拟器和iOS9在设备上成功运行我的代码。 我用

[myString containsString:@"null"]; 

在这种情况下行事。它感觉不好,但它工作。 现在我正在测试iOS7中较老的设备,并且不那么宽容:它在该行上崩溃。

所以,我想

[myString isKindOfClass:[NSNull class]]; 

但这似乎并不适用。

所以,基本上,我很短的知识在这里,我希望你们中的一个能解释一下这是怎么一回事。

谢谢!

回答

1

@"<null>"是将[NSNull null]转换成NSString的结果,例如,使用:

id value = [NSNull null]; 
NSString *stringValue = [value description]; 

注意stringValue是一个字符串,因此条件[myString isKindOfClass:[NSNull class]]将是错误的。

你必须检查NSNull您的值转换为NSString之前。

一个典型的解决方案是转换NSNullnil,例如上NSDictionary声明一个类中的方法:

- (id)betterObjectForKey:(NSString *)key { 
    id value = [self objectForKey:key]; 

    if (value == [NSNull null]) { 
     return nil; 
    } 

    return value; 
} 

,然后使用betterObjectForKey:代替objectForKey:。我个人使用变体解析服务器数据时,它检查值(例如NSNumberNSString)的类型。

+0

好的,谢谢。这回答了我的问题(的确,这是json数据)。在这个阶段使用什么水密条件,我应该决定不首先检查json null值吗? – Sjakelien