我现在卡住了,我无法在Objective C中检查Object是否为NULL。
当我从 _detail.CompanyImg 获得价值时,这是NSLog的结果。
_detail.CompanyImg text = (null)
以下是检查对象是否为空。
if (_detail.CompanyImg && && [_detail.CompanyImg length] > 0) {
但遇到以下错误甚至尝试过。
[NSNull length]:无法识别的选择器发送到实例0x10bcaa4c0
答案 0 :(得分:3)
对象_detail.CompanyImg
显然是NSNull
的一个实例,并非严格nil
。这是一个特例,因为在Objective-C集合类中保存空值是不可能的,因此在必须表示它的情况下,使用NSNull
类。
如果你知道这是可能的,那么这将有效:
if (!_detail.CompanyImg || _detail.CompanyImg == [NSNull null]) {
// it's null
}
注意:NSNull
是一种特殊情况,可以使用==
进行比较;通常您使用isEqual
或isKindOfClass
。
答案 1 :(得分:1)
您可以通过
查看if (object == (id)[NSNull null]) {
//do something
}
或
if (object isEqual:[NSNull null]) {
//do something
}
答案 2 :(得分:0)
nil或NULL值无法按原样存储在NSArray
或NSDictionary
中。
您必须将其存储为特殊值[NSNull null]
。
JSON解析器通常会将空值报告为[NSNUll null]
。
[NSNull null]是一个对象,因此[NSNull null] == nil
为FALSE且[NSNull null] != nil
为TRUE。
所以你应该尝试:
if (_detail.CompanyImg && detail.CompanyImg != [NSNUll null] && [_detail.CompanyImg length] > 0) {
// do your stuff
}
或者检查班级:
if (_[detail.CompanyImg isKindOfClass:[NSString class]] && [_detail.CompanyImg length] > 0) {
// do your stuff
}
答案 3 :(得分:0)
这是我的检查没有任何错误。
if (_detail.CompanyImg != [NSNull null]) {