NSDictionary 无法读取 web 服务中的数组
Posted
技术标签:
【中文标题】NSDictionary 无法读取 web 服务中的数组【英文标题】:NSDictionary failed to read array in webservice 【发布时间】:2014-08-12 10:31:20 【问题描述】:我是开发 Xcode 5 的新手,无法通过 php 连接到 SQLServer。 php结果是这样的:
"user":["user_id":"2393", "id":"740049"], "succeed":1
这个网络服务不是我创建的,而是我的团队创建的。我尝试通过 NSLog 跟踪该过程,发现问题是我创建的 NSDictionary 无法读取这种格式。
这是我的 NSDictionary
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:urlData option:NSJONReadingMutableContainers error:&error];
success=[json[@"success"] integerValue];
NSLog(@"Success:%ld", (long)success);
如果我的 NSDictionary 能够读取数据,那么成功应该是 1,但它一直显示 0。我发现问题是我无法在字典中解析该数组。谁能帮我解决这个问题?
【问题讨论】:
检查你的密钥,你使用的是不同的密钥 什么键?抱歉这么个菜鸟问题 【参考方案1】:您输入了错误的键值。它将是@“成功”。但是你输入@"success"
NSJSONSerialization *jsonData = [NSJSONSerialization JSONObjectWithData: urlData options:NSJSONReadingMutableContainers error:&error];
int success=[[(NSDictionary *)jsonData valueForKey:@"succeed"]integerValue];
NSLog(@"Success:%ld", (long)success);
【讨论】:
【参考方案2】:错别字:
success=[json[@"succeed"] integerValue];
// ^^^^^^^
【讨论】:
我之前试过,但这不是问题。改成成功会报错Thread 1 signal SIGABRT @user3932914 这是一个不同的错误,需要一个问题本身。 是的,我知道该错误的原因。我用 SIGABRT 绊倒了一千次,并习惯于修复它。我发现我的问题是我的 NSDictionary 只能获取用户并成功,而不是用户数组中的数组。但我不知道如何解决它 @user3932914 我只能回答向我提出的问题,这是我在您的问题中看到的唯一问题。如果没有更多细节,我无法再添加任何内容,但在您开始使用字典中的正确键之前,您不会取得任何进一步的进展。【参考方案3】://returnString is "user":["user_id":"2393", "id":"740049"], "succeed":1;
NSDictionary *response = [returnString dataUsingEncoding:NSUTF8StringEncoding];
NSArray *users =[NSArray alloc]init];
if([[response valueForKey:@"succeed"] integerValue] == 1)
users = [response valueForKey:@"user"];
for(NSDictionary *user in users)
NSLog(@"User : %@", user);
样本输出
User: [user_id:2393,id:740049,user_id:2394,id:740050...,user_id:2395,id:740051];
【讨论】:
以上是关于NSDictionary 无法读取 web 服务中的数组的主要内容,如果未能解决你的问题,请参考以下文章
无法创建 Plist 文件。 iOS+NSDictionary+JSON
将 NSData 与 NSDictionary 参数一起传递给 Web 服务
在 Objective-C 中使用 JSON 数据的 NSJSONSerialization 读取 NSDictionary 集的键值
无法打开网站web服务器上似乎未安装frontpage服务器扩展 无法读取microsoft internet information server