2010-09-12 112 views
0

我想在iphone上比较两个字符串,但是IF语句总是为false。这里是我的代码:比较iPhone上的字符串失败?

NSLog([[UIDevice currentDevice]uniqueIdentifier]); 
if ([[[UIDevice currentDevice]uniqueIdentifier] compare:[[NSUserDefaults standardUserDefaults] valueForKey:@"id"]] == NSOrderedSame) { 
    //OK 
    NSLog("Do stuff if equal"); 
} else { 
    // Not OK 
    NSLog("Do stuff if not equal"); 
} 

输出始终

*** UDID *** (<- my device's UDID) 
Do stuff if not equal 

我在做什么错?

谢谢! 伊凡

+0

确定它们是一样的吗?做一个'NSLog()'并确保。 – BoltClock 2010-09-12 10:29:58

+0

是的,因为我之前将UDID存储在该“id”值中。 – friedkiwi 2010-09-12 11:30:11

回答

2

尝试使用stringForKey:代替valueForKey:isEqualToString:而不是compare: ... == NSOrderedSame

+0

这解决了这个问题!谢谢! – friedkiwi 2010-09-12 11:30:32

+0

使用isEqualToString:而不是比较:不太可能解决问题;主要区别在于比较:做一个(非文字的)Unicode字符串比较,它比较慢但是“正确”。 – 2010-09-12 13:53:38

+0

我知道,修正是将'valueForKey:'改为'stringForKey:','isEqualToString:'而不是'compare:'只是因为我认为在这种情况下使用它更好/更容易。 – 2010-09-12 13:57:39