Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C中的NSString比较问题_Objective C_Nsstring - Fatal编程技术网

Objective-C中的NSString比较问题

Objective-C中的NSString比较问题,objective-c,nsstring,Objective C,Nsstring,代码如下: NSString *decryptResponseString = [AESCrypt decrypt128:responseString key:@"a16byteslongkey!"]; NSString *lisence = [NSString createLisence:self.serial withSalt:sha_salt]; NSLog(@"lisence: %@", lisence); NSLog(@"decrypt: %@", decryptRes

代码如下:

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]lisence: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];

你确定它们是一样的吗?没有多余的空格吗?是的,我现在就检查我不知道为什么当我检查两个字符串的长度时,会有不同:2012-12-16 16:19:43.970 TextLabelButton[1478:11303]lisence的长度:25 2012-12-16 16:19:43.970 TextLabelButton[1478:11303]解密的长度:32 lisence的长度:25,解密的长度:32?您的AESCrypt使用什么库?您试过了吗?@trungho尝试使用[[NSCharacterSet alphaNumericCharacterSet]inversedset]作为stringByTrimmingCharactersInSet:的参数,看看是否有效。这将删除除数字和字母以外的任何内容(以防字符串中有非打印字符)。谢谢,我已经解决了这个问题,我认为这两个字符串之间的差异是由于我使用的AESCrypt造成的。所以我将两者都改为char*,然后进行比较:const char*lisence_str=[lisence UTF8String];const char*decrypt_str=[decryptResponseString UTF8String];并使用strcmp(lisence_str,decrypt_str)比较它们是否不同。成功了!