2013-07-17 37 views
0

任何人都可以告訴我什麼是錯誤的下面?多個如果條件使用字符串isEqualTo

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日:我是從那個正在被的Android和iOS版本都共享一個PHP腳本返回JSON一個移動應用。 Java很靈活,因爲它能夠接受一個數字並將其視爲一個字符串。另一方面,Objective-C並不如此寬容,這就是爲什麼我遇到上述這個問題。

+0

這意味着你的變量是'NSNumber's,而不是'NSString's。修復。 – borrrden

回答

3

其中一個或所有對象是一個NSNumber,並不知道如何處理消息isEqualToString:

因爲他們的名字我猜都是用布爾值

if ([isFormInputIncomplete isEqualToNumber:@YES] || 
    [isUserNameTaken   isEqualToNumber:@YES] || 
    [isUserNameFormatInvalid isEqualToNumber:@YES] || 
    [isPasswordInvalid  isEqualToNumber:@YES] || 
    [isEmailInvalid   isEqualToNumber:@YES]) 

if ([isFormInputIncomplete boolValue] == YES || 
    //…) 

檢查NSNumbers,如果一個對象是某一種(類或子類)的你可以使用isObjectOfKind:

if([isFormInputIncomplete isKindOfClass: [NSNumber class]]) 
+0

同意你和GB。爲清楚起見,我可能會使用'[isFoo boolValue] == YES'。 – danh

2

看起來你的一個值是NSNumber而不是N SString。我不知道哪一個。當你找到它時,你會想要使用:

[isNumberValue isEqualToNumber:@1]