小编典典

在 Objective-C 中检查空字符串的正确方法是什么?

all

我在我的 iPhone 应用程序中使用它

if (title == nil) {
    // do something
}

但它引发了一些异常,控制台显示标题为“(null)”。

所以我现在使用这个:

if (title == nil || [title isKindOfClass:[NSNull class]]) {
    //do something
}

有什么区别,确定字符串是否为空的最佳方法是什么?


阅读 140

收藏
2022-07-16

共1个答案

小编典典

正如其他人指出的那样,在 Cocoa/Objective C 下有多种“null”。但要注意的另一件事是 [title
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 崩溃。

2022-07-16