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