XCode如何检查对象是否为NULL

时间:2015-06-11 07:28:39

标签: ios objective-c xcode

我现在卡住了,我无法在Objective C中检查Object是否为NULL。

当我从 _detail.CompanyImg 获得价值时,这是NSLog的结果。

_detail.CompanyImg text = (null)

以下是检查对象是否为空。

if (_detail.CompanyImg &&  && [_detail.CompanyImg length] > 0) {

但遇到以下错误甚至尝试过。

  

[NSNull length]:无法识别的选择器发送到实例0x10bcaa4c0

4 个答案:

答案 0 :(得分:3)

对象_detail.CompanyImg显然是NSNull的一个实例,并非严格nil。这是一个特例,因为在Objective-C集合类中保存空值是不可能的,因此在必须表示它的情况下,使用NSNull类。

如果你知道这是可能的,那么这将有效:

if (!_detail.CompanyImg || _detail.CompanyImg == [NSNull null]) {
    // it's null
}

注意:NSNull是一种特殊情况,可以使用==进行比较;通常您使用isEqualisKindOfClass

答案 1 :(得分:1)

您可以通过

查看
if (object == (id)[NSNull null]) {
    //do something
}

if (object isEqual:[NSNull null]) {
    //do something
}

答案 2 :(得分:0)

nil或NULL值无法按原样存储在NSArrayNSDictionary中。

您必须将其存储为特殊值[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]) {