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 文本标签按钮[1430:11303] 许可: 3b27cde24235d08a5de5904a4
2012-12-16 15:52:30.250 文本标签按钮[1430:11303] 解密: 3B27CDE24235D08A5DE5904A4
2012-12-16 15:52:30.250 文本标签按钮[1430:11303] 0

我不知道为什么当我使用[lisence isEqualToString:decryptResponseString](lisence == decryptResponseString)时结果总是"0"。

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

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

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

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

您可以在此处阅读文档

摆脱

空格的解决方法:

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

最新更新