如何在Objective C的决策语句中检查对象的null值

时间:2013-05-10 06:36:01

标签: iphone objective-c try-catch null

NSlog此对象时,我从服务器获取一个对象值作为空值。我想在if-else决策语句中识别它。如何检查它,因为nil引用了一个不知道NULL的未知对象。我也无法将其与零进行比较。

我怎样才能确定这个值是NULL,我在这一点上遇到了崩溃。我已经尝试了@try - @catch阻止但是一切都没了。

对此问题有任何建议。

3 个答案:

答案 0 :(得分:3)

您可以尝试使用以下代码来检查来自服务器的NULL值:

if (nil == str || NSNull.null == (id)str) {

       //Object has Null value

  }
 else{
           // Object has some value
}

str 是包含服务器值的字符串值。 这可能会对你有所帮助。

答案 1 :(得分:3)

最佳方法是:

if([yourObject isKindOfClass:[NSNull null]]) 
{
    // yourObject is null.
}
else 
{
    // yourObject is not null.
}

答案 2 :(得分:3)

正如其他人所指出的,Cocoa / Objective C下有很多种“null”。 但还有一点需要注意的是[object isKindOfClass:[NSNull class]]是无意义的复杂,因为[NSNull null]被记录为单例,因此您可以检查指针是否相等。见Topics for Cocoa: Using Null

所以使用它: -

  if (title == (id)[NSNull null] || title.length == 0 ) title = @"Something";

请注意如何使用即使title为nil,title.length将返回0 / nil / false,在这种情况下为0,因此您不必特殊情况。这是Objective C新手的人难以习惯,特别是来自其他语言的消息/方法调用nil崩溃。

如果您想详细了解nil,Nil和null之间的区别,可以查看这篇文章What is the difference between nil, Nil and null.

相关问题