2012-04-27 38 views
0

林提取数据从NSMuableDictionary到的NSString和尝试compering为String这样的:提取数据从NSMuableDictionary到的NSString和compering为String问题

NSDictionary *error = [[NSDictionary alloc]init]; 
    NSString *errorCode = [[NSString alloc]init]; 
    error = [sing.globalCallsDitionary valueForKey:@"Error"]; 
    NSLog(@"error code %@",[error valueForKey:@"error_code"]); 
    errorCode = [error valueForKey:@"error_code"]; 
    if ([errorCode isEqualToString:@"-1"]) { 

当if语句执行我得到这个错误在谈论一个数组,错误看起来是这样的:

2012-04-27 06:34:49.686 CallBiz[10319:707] error code (
    "-1" 
) 
2012-04-27 06:35:00.602 CallBiz[10319:707] -[__NSArrayI isEqualToString:]: unrecognized selector sent to instance 0x16fc10 
2012-04-27 06:35:00.608 CallBiz[10319:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI isEqualToString:]: unrecognized selector sent to instance 0x16fc10' 
*** First throw call stack: 
(0x3541f88f 0x36846259 0x35422a9b 0x35421915 0x3537c650 0xb2a3 0x353793fd 0x32458faf 0x32458f6b 0x32458f49 0x32458cb9 0x324595f1 0x32457ad3 0x324574c1 0x3243d83d 0x3243d0e3 0x3667222b 0x353f3523 0x353f34c5 0x353f2313 0x353754a5 0x3537536d 0x36671439 0x3246be7d 0x2e61 0x28fc) 
terminate called throwing an exception 

这是因为Xcode是找我的NSString *errorCode = [[NSString alloc]init];,就好像它是一个NSArray,有人可以帮我吗?

+0

我不这么认为,如果语句中有任何问题... – Nit 2012-04-27 04:09:07

+0

前检查和代码的if语句.. – Nit 2012-04-27 04:10:33

回答

2

发生错误是因为您的errorCode以数组而不是字符串形式出现。如果你确信只有1对象来到这里,那么你可以使用 -

if ([[errorCode objectAtIndex:0] isEqualToString:@"-1"]) 

它将工作,但它会通过一个警告,因为错误码为定义为字符串对象。所以你需要确定你得到的数据是什么,然后适当地定义数据结构。

+0

谢谢RIP,它的工作,我改变了的errorCode的定义,以一个NSArray以及 – 2012-04-27 04:16:58

+0

完善的售后服务!!还需要确保错误代码始终作为数组的第一个对象。 – rishi 2012-04-27 04:20:19

+2

您可能需要小心,因为它是一个数组,表明可能存在多个错误代码。你可能想使用像[errorCode containsObject:@“ - 1']而不是? – 2012-04-27 04:37:21