使用String的多个If条件isEqualTo

时间:2013-07-17 01:15:28

标签: ios objective-c cocoa-touch if-statement nsstring

有人能告诉我下面的问题吗?

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并不宽容,这就是我遇到上述问题的原因。

2 个答案:

答案 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]