我试过了:
- (NSString*) generateString { NSString* stringToReturn = @"thisString"; return stringToReturn; } - (void) otherMethod { NSString *returnedString = [self generateString]; if (returnedString == @"thisString") { // Do this } else if (returnedString == @"thatString") { // Do that } }
哪个从不匹配.
我试过了
if ([returnedString compare:@"thisString"] == 1)
但是compare方法总是为我返回1,即使与不同的字符串进行比较也是如此.
这样做的正确方法是什么,我应该得到什么结果?
首先,您使用==
运算符来比较两个对象指针(类型NSString *
).因此,当指针相同时返回true,而不是在字符串具有相同内容时返回true.如果你想比较两个字符串是否相同,你应该使用isEqualToString:
或isEqual:
(isEqual:
更通用,因为它适用于所有类型的对象).
其次,compare:
返回0
(NSOrderSame
)当它们是相同的,和1
(NSOrderedDescending
当所述第一比第二更大).所以事实上只有当它们不同时才会返回1 (特别是当第一个大于第二个时).
[returnedString isEqualToString: @"thisString"]
当比较两个相同的字符串时compare
将返回NSOrderedSame
,它也是0.它还可以返回NSOrderedAscending
-1,和NSOrderedDescending
1.
您可能更喜欢使用isEqualToString
哪个返回YES或NO.
if ([returnedString isEqualToString:@"thisString"]) NSLog(@"Equal"); else NSLog(@"Not Equal");