3

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

我怎么能确定这个值是NULL,我在这一点上崩溃了。我也尝试过@try - @catch阻止,但一切都徒劳无功。

对此问题的任何建议。

4

3 回答 3

3

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

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

       //Object has Null value

  }
 else{
           // Object has some value
}

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

于 2013-05-10T07:01:13.180 回答
3

正如其他人指出的那样,在 Cocoa/Objective C 下有多种“null”。但要注意的另一件事是,这[object isKindOfClass:[NSNull class]]是毫无意义的复杂,因为[NSNull null]它被记录为单例,因此您可以检查指针是否相等。请参阅Cocoa 主题:使用 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有什么区别,可以查看这篇文章nil、Nil和null有什么区别。

于 2013-07-29T11:42:10.537 回答
3

最好的方法是:

if([yourObject isKindOfClass:[NSNull null]]) 
{
    // yourObject is null.
}
else 
{
    // yourObject is not null.
}
于 2013-05-10T07:04:06.980 回答