Hi I am getting this data form server
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;
And beacuse of that I am getting below error.
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI length]: selector sent to instance 0x165d5150'``
Any help will be appreciated.
The issue is, your feed
key holds an array. You are not properly handling that in your code, that is why the crash occurs. When you call valueForKey:
it retrieves an array of values held by that specific key.
For fixing that you can use:
NSArray *feed = [saveDic objectForKey:@"feed"];
NSArray *referralCodes = [feed valueForKey:@"code"];
NSString *referralCode = referralCodes.count ? referralCodes[0] : @"";
NSLog(@"%@",referralCode);
But I personally prefer using objectForKey:
instead of valueForKey:
. So you can re-write the code like:
NSArray *feed = [saveDic objectForKey:@"feed"];
NSString *referralCode = feed.count ? [feed[0] objectForKey:@"code"] : @"";
NSLog(@"%@",referralCode);