我有一些空值问题正在从JSON中解析。由于我在UILabel的实体看到空类型时将该实体链接到该实体,因此它会使应用程序崩溃。有没有什么好的方法在视图上显示空值,而不是在每一组链接上检查空值?来自JSON的空值
感谢
我有一些空值问题正在从JSON中解析。由于我在UILabel的实体看到空类型时将该实体链接到该实体,因此它会使应用程序崩溃。有没有什么好的方法在视图上显示空值,而不是在每一组链接上检查空值?来自JSON的空值
感谢
if (objectHoldingJsonValue == [NSNull null]) {
// you have a null value, move in other value
}
类NSNull适用于这样的情况。它被用来在收藏其中值null
(为0x0)是不允许的(NSArray
,NSDictionary
等)
用法类似于以下内容:如果你想避免穿越
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
}
这就是解决方案,但如果在字典或数组中有一些实体为空,会出现什么情况?我是否必须遍历所有这些来创建一些比null更值的值? – kforkarim
在JSON对象集合,你可以子类的UILabel和过度骑二传手的“文本”属性,验证反对它可以为空值(例如,使用理查德的做法):
- (void) setText:(NSString *)textValue
{
if ([textValue isKindOfClass:[NSNull class]]) textValue = nil;
[super setText:textValue];
}
当然,德这种方法可以让你打开应用程序中的任何其他情况,这个NULL值可能会给你带来麻烦,这就是为什么在数据模型的上下文中验证/清理可能是首选。
最简单的生根方式是将NULL置于JSON字典之外。用的NSDictionary的作品,并不一定是可变的:
[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
if ([obj isKindOfClass:[NSNull class]]) [dictionary setValue:[NSString stringWithString:@""] forKey:key];
} ];
注意,您可以在应用程序中有NSNull'的'多个实例,所以我会用'-isKindOfClass居然建议:'。 –