Dav*_*ton 8 cocoa-touch objective-c ios
我想比较两个字符串,我希望nil等于空字符串(@"").现在我正在这样做,这很好:
if ([self.firstName ? self.firstName : @"" isEqualToString:anotherContact.firstName ? anotherContact.firstName : @""]) {
// They are equal.
}
Run Code Online (Sandbox Code Playgroud)
但似乎有一些我想念的东西更简单.
我不是在寻找区分大小写的.如果情况不同,那么测试应该失败.
Ada*_*ach 13
[string length]
Run Code Online (Sandbox Code Playgroud)
工作,但如果它也是零,它将返回零.如果这对你来说是可以接受的,那就更简单了.
顺便说一句,嵌套的三元运算符可以在您自己的家中隐私,但是如果您正在编写代码进行共享,那么最好将其展开一点,这样很明显.
在回应评论时,我这样做的方式是这样的:
if((([a length] == 0) && ([b length] == 0)) ||
([a isEqualToString:b])) {
// they are equal
}
Run Code Online (Sandbox Code Playgroud)
如果任一条款成功,则字符串相等.第二个捕获任何实际上相等的非零字符串,包括@"" == @"".第一次捕获a和b两者nil,或一个nil和一个@"".我确实写了第((a == nil) && (b == nil))一个,但你说@""应该等于零.
Bry*_*hen 12
你可以使用?:运营商.a ? a : b与a ?: b(a仅执行一次的副作用)相同
if ([self.firstName ?: @"" isEqualToString:anotherContact.firstName ?: @""]) {
// They are equal.
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下我建议使用一个函数:
NSString * emptyStringIfNil(NSString * s)
{
if( !s ) return @"";
else return s;
}
Run Code Online (Sandbox Code Playgroud)
if ([emptyStringIfNil(self.firstName) isEqualToString:emptyStringIfNil(anotherContact.firstName)]) {
// They are equal.
}
Run Code Online (Sandbox Code Playgroud)
更容易阅读.您可以根据需要执行功能的内部; 我会说三元条件在那里是合理的.
| 归档时间: |
|
| 查看次数: |
2758 次 |
| 最近记录: |