我想比较两个字符串,我希望 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
}
如果任一子句成功,则字符串相等。第二个捕获任何实际上相等的非零字符串,包括 @""== @""
。第一个捕获 a
和 b
都是 nil
,或者一个 nil
和一个 @""
。我一开始确实把第一个写成 ((a == nil) && (b == nil))
但你说 @""
应该等于 nil。
关于ios - NSString 比较 @""== nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23923603/