gpt4 book ai didi

objective-c - 为什么NSString比较: return NSOrderedSame when the strings are different?

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:38 25 4
gpt4 key购买 nike

为什么比较返回 NSOrderedSame?:

NSString *testString = [anObject aString];

if ([testString compare:@"a string which doesn't equal testString"] == NSOrderedSame) {
//do stuff
}

注意:我添加了这个问题,所以我不会再犯这个错误(因此我立即给出了答案)。

最佳答案

这是因为testString 可以等于nil。向 nil 发送消息会返回 nilNSOrderedSame 等于 0,而 0 等于 nil

NSLog(@"nil == NSOrderedSame = %d", (nil == NSOrderedSame)); //nil == NSOrderedSame = 1
NSLog(@"[nil compare:@\"arf\"] == nil = %d", ([nil compare:@"arf"] == 0)); //[nil compare:@\"arf\"] == nil = 1

为避免这种情况,请确保对象在比较之前不是nil,例如:

if (testString != nil && [testString compare:@"testString"] == NSSOrderedSame) ...

注意:我添加了这个问题,这样我就不会再犯这个错误了。

关于objective-c - 为什么NSString比较: return NSOrderedSame when the strings are different?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/976345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com