我正在尝试同步数据,并且在同步数据后,我从服务器收到一条消息。现在,我想显示此消息。但是解析时出现错误。下面是我的代码。
- (void)connection:(NSURLConnection *)connection didReceiveData:data{
NSLog(@"ConnectionDidReceiveData");
NSString *strdata=[[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"Data as received =%@",strdata);
if(strdata.length>2)
{
SBJSON *jsonparser=[[[SBJSON alloc]init]autorelease];
NSDictionary *res= [jsonparser objectWithString:strdata];
NSLog(@"res = %@",res);
NSArray *syncMessage = [res objectForKey:@"synchData"];
NSLog(@"syncMessage = %@",syncMessage);
// NSDictionary *dict = [syncMessage objectAtIndex:2];
// NSLog(@"message = %@",[dict objectForKey:@"message"]);
for (NSDictionary *result in syncMessage) {
NSLog(@"result = %@",[result objectForKey:@"message"]); **<---- Error Occurs Here.**
// NSString *message = [result objectForKey:@"message"];
//NSLog(@"Message=%@",message);
}
}
}
错误 :
-[__ NSCFString objectForKey:]:无法识别的选择器已发送到实例0x93e9880 2013-11-26 10:43:07.723 M [608:11903] ***由于未捕获的异常'NSInvalidArgumentException'而终止了应用程序,原因:'-[__ NSCFString objectForKey: ]:无法识别的选择器已发送到实例0x93e9880'
JSON响应...
syncMessage = {
code = 0;
fromdate = "-0-";
message = "You have exceeded your leave count";
todate = "-0-";
}
请帮忙。
现在,相同的代码适用于该JSON,这可能是什么问题?我的res变量为空。
{"synchData":{"message":"DCR Sync successful","code":1,"date":"2013-11-24"}}
问题出在代码解析中。
这是您的JSON数据
{
synchData = {
code = 0;
fromdate = "-0-";
message = "You have exceeded your leave count";
todate = "-0-";
};
}
synchData不是数组,而是它的字典,而您正在将字典设置为数组,这就是问题所在。
所以我认为问题出在此代码之后
NSArray *syncMessage = [res objectForKey:@"synchData"];
NSLog(@"syncMessage = %@",syncMessage);
// NSDictionary *dict = [syncMessage objectAtIndex:2];
// NSLog(@"message = %@",[dict objectForKey:@"message"]);
for (NSDictionary *result in syncMessage) {
NSLog(@"result = %@",[result objectForKey:@"message"]); **<---- Error Occurs Here.**
// NSString *message = [result objectForKey:@"message"];
//NSLog(@"Message=%@",message);
}
}
像这样做
NSDictionary *syncMessage = [res objectForKey:@"synchData"];
NSLog(@"result = %@",[syncMessage objectForKey:@"message"]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句