NSInvalidArgumentException',原因:' - [__ NSArrayI length]:无法识别的选择器发送到实例0x165d5150'

时间:2015-10-19 08:47:02

标签: ios objective-c xcode nsarray

您好我正在获取此数据表单服务器

NSDictionary*feed=[saveDic objectForKey:@"feed"];
NSLog(@"%@",feed); //Outputs: feed = ( { code = yQ7j0t; "user_id" = 889445341091863; } ); }
NSLog(@"%@",[feed valueForKey:@"code"]);
NSString *referralCode = [feed valueForKey:@"code"];
NSLog(@"%@",referralCode);
self.referralCode.text=referralCode;

请注意,我的误差低于此值。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI length]: selector sent to instance 0x165d5150'``

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

您使用变量的地方;

yourVaribleName.length

[yourVaribleName length]

应该是

yourVaribleName.count

注意:崩溃恰恰说明" yourVaribleName "是 NSArray 类型,您希望 NSArray 长度。但 NSArray 没有功能" 长度"。 NSArray有" 计数"特征

//尝试使用此代码

NSArray *referralCode = [feed valueForKey:@"code"];
NSLog(@"%@",referralCode);
self.referralCode.text=[referralCode componentsJoinedByString:@" "];//@"," or @"" what event you need

答案 1 :(得分:0)

问题是,您的feed密钥包含一个数组。您没有在代码中正确处理它,这就是崩溃发生的原因。当您调用valueForKey:时,它会检索该特定键所持有的值数组。

为了修复你可以使用:

NSArray *feed          = [saveDic objectForKey:@"feed"];
NSArray *referralCodes = [feed valueForKey:@"code"];
NSString *referralCode = referralCodes.count ? referralCodes[0] : @"";
NSLog(@"%@",referralCode);

但我个人更喜欢使用objectForKey:代替valueForKey:。所以你可以重写代码:

NSArray *feed          = [saveDic objectForKey:@"feed"];
NSString *referralCode = feed.count ? [feed[0] objectForKey:@"code"] : @"";
NSLog(@"%@",referralCode);

答案 2 :(得分:0)

您的Feed数据位于数组中。所以你从array.Hope中检索代码值它会帮助你。

 NSMutableArray*feed=[saveDic objectForKey:@"feed"];
    NSLog(@"%@",feed);
    NSLog(@"%@",[feed valueForKey:@"code"]);
    NSString *referralCode =  [[feed objectAtIndex:indexPath]valueForKey:@"code"];
    NSLog(@"%@",referralCode);
    self.referralCode.text=referralCode;