2011-12-09 39 views
0

我有一些空值问题正在从JSON中解析。由于我在UILabel的实体看到空类型时将该实体链接到该实体,因此它会使应用程序崩溃。有没有什么好的方法在视图上显示空值,而不是在每一组链接上检查空值?来自JSON的空值

感谢

回答

2
if (objectHoldingJsonValue == [NSNull null]) { 
    // you have a null value, move in other value 
} 
+1

注意,您可以在应用程序中有NSNull'的'多个实例,所以我会用'-isKindOfClass居然建议:'。 –

3

NSNull适用于这样的情况。它被用来在收藏其中值null(为0x0)是不允许的(NSArrayNSDictionary等)

用法类似于以下内容:如果你想避免穿越

id myValue = // get value from collection 

// method one (recommended, as you could have more than one instance of NSNull) 
if ([myValue isKindOfClass:[NSNull class]) 
{ 
    // null value 
} 

// method two, not recommended 
if (myValue == [NSNull null]) 
{ 
    // null value 
} 
+0

这就是解决方案,但如果在字典或数组中有一些实体为空,会出现什么情况?我是否必须遍历所有这些来创建一些比null更值的值? – kforkarim

0

在JSON对象集合,你可以子类的UILabel和过度骑二传手的“文本”属性,验证反对它可以为空值(例如,使用理查德的做法):

- (void) setText:(NSString *)textValue 
{ 
    if ([textValue isKindOfClass:[NSNull class]]) textValue = nil; 
    [super setText:textValue];   
} 

当然,德这种方法可以让你打开应用程序中的任何其他情况,这个NULL值可能会给你带来麻烦,这就是为什么在数据模型的上下文中验证/清理可能是首选。

0

最简单的生根方式是将NULL置于JSON字典之外。用的NSDictionary的作品,并不一定是可变的:

[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 
    if ([obj isKindOfClass:[NSNull class]]) [dictionary setValue:[NSString stringWithString:@""] forKey:key]; 
} ];