Objective-C中的NSString比较问题

时间:2012-12-16 16:10:50

标签: objective-c nsstring

以下是代码:

NSString *decryptResponseString = [AESCrypt decrypt128:responseString key:@"a16byteslongkey!"];        
NSString *lisence = [NSString createLisence:self.serial withSalt:sha_salt];
NSLog(@"lisence: %@", lisence);
NSLog(@"decrypt: %@", decryptResponseString);
int a = [lisence isEqualToString:decryptResponseString]?1:0;
NSLog(@"%i", a);

这是日志:

  

2012-12-16 15:52:30.249 TextLabelButton [1430:11303] lisence:3b27cde24235d08a5de5904a4
      2012-12-16 15:52:30.250 TextLabelButton [1430:11303]解密:3b27cde24235d08a5de5904a4
      2012-12-16 15:52:30.250 TextLabelButton [1430:11303] 0

我不知道为什么当我使用[lisence isEqualToString:decryptResponseString](lisence == decryptResponseString)时结果始终为“0”。

2 个答案:

答案 0 :(得分:1)

我会检查字符串长度是否相同。

如果不是,如果两端都有空格,那么这就是你的字符串生成函数。

如果你想摆脱前导和尾随字符串,请使用NSString的方法,例如

NSString *trimmedString = [strimToTrim stringByTrimmingCharactersInSet:[NSCharacterSet whiteSpaceCharacterSet]];

您可以阅读文档here

答案 1 :(得分:0)

摆脱空间的解决方法:

id trimmedDecrypt = [decrypt stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
BOOL r = [license isEqualToString:trimmedDecrypt];