可能重复:
比较objective-C中的2个字符串
我尝试比较 2 个 NSString 之间的相等性...
第一个存储在共享用户默认值中,第二个由用户通过 NSTextField 输入...
这是我的一些代码(Xcode 4.5.2 Mac OS 10.7)...
第一个 AppDelegate.h :
@interface AppDelegate : NSObject <NSApplicationDelegate>{
NSUserDefaults *administratifPref;
...
IBOutlet NSTextField *champProtection;
...
}
...
- (IBAction)poursuivre:(id) sender;
...
@end
这里是 AppDelegate.m :
- (IBAction)poursuivre:(id)sender {
if([champProtection stringValue] == [champProtection stringValue]){
...
...
}
}
我的问题是:为什么条件“如果”从未得到验证?!
我没有问题,没有崩溃......
我确实添加了 2 个 NSLog :
- (IBAction)poursuivre:(id)sender {
NSLog([champProtection stringValue]);
NSLog([administratifPref valueForKey:@"motdepasse"]);
if([champProtection stringValue] == [champProtection stringValue]){
...
...
}
}
并且返回的值是相同的:(
我发现的唯一解决方案是:
- (IBAction)poursuivre:(id)sender {
BOOL result = [[champProtection stringValue] isEqualToString:[administratifPref valueForKey:@"motdepasse"]];
if(result == YES) {
...
...
}
}
所以......谁能解释一下这两种编码方式之间的区别,这似乎很不一样?(但对于像我这样的新手来说,这似乎真的是一样的,他们相信那些说 Cocoa 很简单的人^^)