当这个对象时,我从服务器获取一个对象值作为空值。我NSlog
想在if-else
决策语句中识别它。我如何检查它,因为 nil 引用了一个未知对象,这并不意味着NULL
。我也不能将它与零进行比较。
我怎么能确定这个值是NULL
,我在这一点上崩溃了。我也尝试过@try - @catch
阻止,但一切都徒劳无功。
对此问题的任何建议。
当这个对象时,我从服务器获取一个对象值作为空值。我NSlog
想在if-else
决策语句中识别它。我如何检查它,因为 nil 引用了一个未知对象,这并不意味着NULL
。我也不能将它与零进行比较。
我怎么能确定这个值是NULL
,我在这一点上崩溃了。我也尝试过@try - @catch
阻止,但一切都徒劳无功。
对此问题的任何建议。
您可以尝试以下代码来检查来自服务器的 NULL 值:
if (nil == str || NSNull.null == (id)str) {
//Object has Null value
}
else{
// Object has some value
}
str是包含服务器值的字符串值。这可能会对您有所帮助。
正如其他人指出的那样,在 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有什么区别。
最好的方法是:
if([yourObject isKindOfClass:[NSNull null]])
{
// yourObject is null.
}
else
{
// yourObject is not null.
}