2013-02-02 19 views
6

के लिए भेजा जब मैं JSON php से मानों तो मैं __NSCFBoolean isEqualToString के लिए इस मुद्दे को हो रही हो रही है:__NSCFBoolean isEqualToString:]: गैर मान्यता प्राप्त चयनकर्ता उदाहरण

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
     //convert to JSON 
     for(id key in res) { 
     id value = [res objectForKey:key]; 

     NSString *keyAsString = (NSString *)key; 
     NSString *valueAsString = (NSString *)value; 
     //NSCFBoolean 
     /*if([value isKindOfClass:[NSNumber class]]) 
     { 
      printf("Number"); 
     } 
     else if([value isKindOfClass:[NSString class]]) 
     { 
      printf("String --- \n"); 
      if([value isEqualToString:@"0"]) 
      { 
       printf("Wrong \n"); 
      } 
      else 
      { 
       printf("Right \n"); 
      } 
     }*/ 
     NSLog(@"%@",[valueAsString class]); 
     if([keyAsString isEqualToString:@"success"]) 
     { 
      printf("Working \n"); 
     } 
     else 
     { 
      printf("Not Working\n"); 
     } 
     //Error is in below line 
     if([valueAsString isEqualToString:@"0"])// strcmp([value objCType], @encode(BOOL)) == 1) 
     { 
      [self loginSuccess]; 
     } 
     else if(strcmp([value objCType], @encode(BOOL)) == 0) 
     { 
      [self loginFailure]; 
     } 
     NSLog(@"key: %@", keyAsString); 
     NSLog(@"value: %@", valueAsString); 
    } 

} }:

मेरे कोड इस प्रकार है [__NSCFBoolean isEqualToString:]: की

हो रही है इस मुद्दे को न पहचाना गया चयनकर्ता उदाहरण के लिए भेजा 0x1dc9964

searchi कल से इस मुद्दे के लिए Google, लेकिन अभी तक कोई समाधान नहीं है। एनएससीएफबोलियन अब आईओएस 6.0 में भी उपलब्ध नहीं है। तो मैं JSON स्ट्रिंग से "0" या "1" जांचने के लिए क्या कर सकता हूं? कृपया मदद करे।

उत्तर

17

value एक NSNumber वस्तु है (__NSCFBoolean, क्योंकि NSNumber एक वर्ग समूह है) और नहीं एक स्ट्रिंग! [value boolValue] का उपयोग यह निर्धारित करने के लिए करें कि यह 0 या 1.

किसी ऑब्जेक्ट को कास्ट करना इस प्रकार का प्रकार नहीं बदलता है!

+0

मैंने भी कोशिश की, लेकिन काम नहीं कर रहा। :( – VarunJi

+4

बदलें '[valueAsString isEqualToString: @ "0"] 'to' [value boolValue] == 0' –

+2

'[value boolValue] == कोई भी बेहतर नहीं होगा, और'! [Value boolValue]' सबसे अच्छा होगा –

0

यहाँ संदिग्ध हिस्सा है:

if([keyAsString isEqualToString:@"success"] && [valueAsString isEqualToString:@"0"]) 
{ 
} 

या तो keyAsString, valueAsString (शायद इस एक), या दोनों स्ट्रिंग ऑब्जेक्ट नहीं है। क्यूं कर? हम इसे आपके कोड से नहीं जानते हैं, शायद आप अपने JSON डेटा के साथ कुछ गलत करते हैं। कृपया हमें और कोड दिखाएं।

संपादित

इस प्रयास करें:

if([keyAsString isEqualToString:@"success"] && [valueAsString isEqualToNumber:@(NO)]) 
{ 
} 
+0

keyAsString ठीक है लेकिन valueAsString काम नहीं कर रहा है। बस – VarunJi

+0

चेक करें इस तरह की कक्षा प्रिंट करें: एनएसएलओजी (@ "% @", [valueAsString क्लास]); यह निश्चित रूप से __NSCFBoolean होगा। –

+0

हां इसके __NSCFBoolean। अब यह कैसे काम करना है? – VarunJi

संबंधित मुद्दे