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

我在我的 iPhone 应用中使用了这个

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

但它会抛出一些异常,并且控制台显示标题为“(null)”。

所以我现在正在使用它:

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

有什么区别,判断一个字符串是否为空的最好方法是什么?

最佳答案

正如其他人指出的那样,在 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";

请注意如何使用这样一个事实,即使 title 为 nil,title.length 也会返回 0/nil/false,即在这种情况下为 0,因此您不必对它进行特殊处理。这是 Objective C 新手很难适应的东西,尤其是来自其他语言的消息/方法调用 nil 崩溃的语言。

https://stackoverflow.com/questions/968792/

相关文章:

ios - 具有 UITapGestureRecognizer 的 View 中的 UIButton

objective-c - Objective-C 中的方法语法

ios - 在 UITableViewCell 中有一个 UITextField

objective-c - 为什么 Objective-C 委托(delegate)通常被赋予属性分

objective-c - 如何等待异步调度的 block 完成?

ios - UIImageView 上的 UIGestureRecognizer

ios - 如何在 Swift 中设置返回按钮文本

ios - Storyboard 中的 Modal 和 Push segue 有什么区别?

objective-c - 是否可以刷新 UITableView 中的单个 UITableViewC

objective-c - 最佳实践? - 数组/字典作为核心数据实体属性