NSDictionary 检查是否为空
NSDictionary check for null
有没有一种快速的方法来确定字典中的值是否为 NSNULL 而无需检查该对象class like
[[dict objectForKey:@"foo"] class] != [NSNull null];
实际上您发布的内容不正确,您正在将 class ( NSNull ) 与此 class ( NSNull null ) ,
的单例实例进行比较
正确的是
[[dict objectForKey:@"foo"] isKindOfClass:[NSNull class]];
或比较实例
[dict objectForKey:@"foo"] == [NSNull null];
但是如果你有很多这样的调用,你可以创建一个 NSDictionary 类别并在那里添加方法,比如
- (BOOL)nl_isNSNullAt:(id)key {
return [[self objectForKey:key] isKindOfClass:[NSNull class]];
}
或实例
- (BOOL)nl_isNSNullAt:(id)key {
return [self objectForKey:key] == [NSNull null];
}
那么就可以直接访问了
[dict nl_isNSNullAt:@"foo"]
您当然可以选择方法名称和类别...
比较值,而不是 class。
dict[@"foo"] == [NSNull null]
null
方法 returns NSNull
的单例实例。由于只分配了一个 NSNull
的实例,您可以直接将实例的地址与集合元素的地址进行比较,以确定它们中的任何一个在概念上是否为空。
虽然你可以按照食人魔说的去做,但你最好使用:
id someObject = [dict objectForKey:@"foo"];
if (someObject != [NSNull null]){
//do something
}
由于[NSNull null]是一个单例,而且只有一个存在,所以可以直接比较。这是此处文档中使用的内容:
To test for a null object value, you must therefore make a direct object comparison.
这是首选方法。
编辑:这是在 Ogres 编辑他们的 post 以使用身份比较之前写的。
有没有一种快速的方法来确定字典中的值是否为 NSNULL 而无需检查该对象class like
[[dict objectForKey:@"foo"] class] != [NSNull null];
实际上您发布的内容不正确,您正在将 class ( NSNull ) 与此 class ( NSNull null ) ,
的单例实例进行比较正确的是
[[dict objectForKey:@"foo"] isKindOfClass:[NSNull class]];
或比较实例
[dict objectForKey:@"foo"] == [NSNull null];
但是如果你有很多这样的调用,你可以创建一个 NSDictionary 类别并在那里添加方法,比如
- (BOOL)nl_isNSNullAt:(id)key {
return [[self objectForKey:key] isKindOfClass:[NSNull class]];
}
或实例
- (BOOL)nl_isNSNullAt:(id)key {
return [self objectForKey:key] == [NSNull null];
}
那么就可以直接访问了
[dict nl_isNSNullAt:@"foo"]
您当然可以选择方法名称和类别...
比较值,而不是 class。
dict[@"foo"] == [NSNull null]
null
方法 returns NSNull
的单例实例。由于只分配了一个 NSNull
的实例,您可以直接将实例的地址与集合元素的地址进行比较,以确定它们中的任何一个在概念上是否为空。
虽然你可以按照食人魔说的去做,但你最好使用:
id someObject = [dict objectForKey:@"foo"];
if (someObject != [NSNull null]){
//do something
}
由于[NSNull null]是一个单例,而且只有一个存在,所以可以直接比较。这是此处文档中使用的内容:
To test for a null object value, you must therefore make a direct object comparison.
这是首选方法。
编辑:这是在 Ogres 编辑他们的 post 以使用身份比较之前写的。