有人能告诉我下面的问题吗?
if ( [isFormInputIncomplete isEqualToString:@"1"] ||
[isUserNameTaken isEqualToString:@"1"] ||
[isUserNameFormatInvalid isEqualToString:@"1"] ||
[isPasswordInvalid isEqualToString:@"1"] ||
[isEmailInvalid isEqualToString:@"1"] ) {
它给我的错误是:
-[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0x967a570
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0x967a570'
**编辑2013年7月20日:我从PHP脚本返回一个JSON,该脚本由Android和iOS版本的移动应用程序共享。 Java非常灵活,因为它能够接收一个数字并将其视为一个字符串。另一方面,Objective-C并不宽容,这就是我遇到上述问题的原因。
答案 0 :(得分:3)
一个或所有对象是NSNumber,不知道如何处理isEqualToString:
消息。
由于他们的名字,我猜所有的NSNumbers都是布尔值
if ( [isFormInputIncomplete isEqualToNumber:@YES] ||
[isUserNameTaken isEqualToNumber:@YES] ||
[isUserNameFormatInvalid isEqualToNumber:@YES] ||
[isPasswordInvalid isEqualToNumber:@YES] ||
[isEmailInvalid isEqualToNumber:@YES] )
或
if ( [isFormInputIncomplete boolValue] == YES ||
//…)
检查,如果对象属于某种类(类或子类),则可以使用isObjectOfKind:
if([isFormInputIncomplete isKindOfClass: [NSNumber class]])
答案 1 :(得分:2)
看起来你的一个值是NSNumber而不是NSString。我不知道哪一个。当你找到它时,你会想要使用:
[isNumberValue isEqualToNumber:@1]