ios - NSString 比较 @""== nil

标签 ios objective-c cocoa-touch

我想比较两个字符串,我希望 nil 等于空白字符串 (@"")。现在我正在这样做,效果很好:

if ([self.firstName ? self.firstName : @"" isEqualToString:anotherContact.firstName ? anotherContact.firstName : @""]) {
    // They are equal.
}

但似乎我遗漏了一些更简单的东西。

我在这里不是要区分大小写。如果大小写不同,则测试应该失败。

最佳答案

[string length]

有效,但如果它也为 nil,它将返回零。如果您可以接受,那就更简单了。

顺便说一下,嵌套的三元运算符在您自己的家中是可以的,但如果您编写代码是为了分享,也许最好将它分散一点,这样就很明显了。

针对评论,我的做法是这样的:

    if((([a length] == 0) && ([b length] == 0)) ||
        ([a isEqualToString:b])) {
        // they are equal
    }

如果任一子句成功,则字符串相等。第二个捕获任何实际上相等的非零字符串,包括 @""== @""。第一个捕获 ab 都是 nil,或者一个 nil 和一个 @""。我一开始确实把第一个写成 ((a == nil) && (b == nil)) 但你说 @"" 应该等于 nil。

关于ios - NSString 比较 @""== nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23923603/

相关文章:

ios - 如何使用 Alamofire 从 JSON 中提取数据

ios - 无法将 Flurry Analytics 添加到我的 iOS 项目

ios - cordova-plugin-file 在 ios 上不起作用,无法将捕获的图像保存在文档目录中

iphone - 如何在 iPhone 上默认显示数字键盘?

ios - iOS 5 中的表情符号和 UIWebView

ios - 正则表达式返回整个字符串 iOS NSRegularExpression

iphone - UIScrollView 中的 iOS 5 UIButtons 不可点击

iphone - 使用 CALayer 时无法编译代码

iphone - 如何根据时间延迟停止主线程序列?

ios - 如何使动画代码可用于多个类 - 可重用性