0

谁能告诉我下面有什么问题?

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

4

2 回答 2

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]])
于 2013-07-17T01:22:15.170 回答
2

看起来您的值之一是 NSNumber 而不是 NSString。我说不清是哪一个。当你找到它时,你会想要使用:

[isNumberValue isEqualToNumber:@1]
于 2013-07-17T01:22:23.420 回答