我在我的iPhone应用程序中使用了这个
if (title == nil) {
// do something
}
但是它抛出了一些异常,控制台显示标题是"(null)“。
所以我现在使用这个:
if (title == nil || [title isKindOfClass:[NSNull class]]) {
//do something
}
有什么区别,确定字符串是否为空的最佳方法是什么?
发布于 2009-06-10 07:45:36
正如其他人所指出的,在Cocoa/Objective C下有许多种" null“,但需要注意的是,[title isKindOfClass:NSNull class]是毫无意义的复杂,因为NSNull null被记录为一个单例,所以您可以只检查指针是否相等。参见Topics for Cocoa: Using Null。
因此,一个好的测试可能是:
if (title == (id)[NSNull null] || title.length == 0 ) title = @"Something";
请注意,即使标题为nil,title.length也会返回0/nil/false,即本例中的0,因此您不必对其进行特殊处理。这是那些刚接触Objective C的人很难习惯的东西,特别是来自其他语言的人,在这些语言中,对nil的消息/方法调用崩溃。
发布于 2009-06-09 11:25:50
它就像下面这样简单
if([object length] >0)
{
// do something
}
请记住,在目标C中,如果object为null,则返回0作为值。
这将得到一个空字符串和一个长度为0的字符串。
发布于 2009-06-09 08:27:53
请参阅本网站上的以下相关文章:
我认为你的错误与其他事情有关,因为你不应该做额外的检查。
https://stackoverflow.com/questions/968792
复制相似问题