如何访问字典数组并使用Objective C中的字典对象?
Posted
技术标签:
【中文标题】如何访问字典数组并使用Objective C中的字典对象?【英文标题】:How to access array of dictionaries and use the dictionary objects in Objective C? 【发布时间】:2018-03-28 09:04:13 【问题描述】:这是我的“po数组”的样子。
<__NSArrayI 0x7fe093f87160>(
<Entry: 0x600000498c90> (entity: Entry; id: 30506398-1852-433D-B536-
DC57F484F754> ; data:
cumulativeTime = 0000;
latitude = “12.972442”
longitude = "77.580643";
type = enrty;
entryName = Bangalore;
),
<Entry: 0x600000498c90> (entity: Entry; id: 30506398-1852-433D-B536-
DC57F484F754> ; data:
cumulativeTime = 0000;
latitude = “13.067439”
longitude = "80.237617";
type = enrty;
entryName = Chennai;
)
上面的 JSON 存储在其中,我正在使用下面的代码进行检索。
+(NSArray*) routePlan
NSString* aircraftJSONString = [NSString stringWithContentsOfURL [[NSBundle mainBundle] URLForResource:@"Documents/DataJson" withExtension:nil]
encoding:NSUTF8StringEncoding error:nil];
NSArray* aircraftJsonFplWaypoints = [aircraftJSONString componentsSeparatedByString:@","];
我可以访问数组[0],但不能访问数组[0] 中的对象。我需要纬度和经度。知道如何精简到内部字典值。
【问题讨论】:
获取数组[0] 作为字典而不是从字典中获取键的值。 你能分享一些代码吗? 这不可能是问题中的 array。顺便说一句:请不要使用 cmets 添加信息。 Edit你的问题。 知道如何解决吗? @HirakBarman 检查我的答案 【参考方案1】:字典似乎是名为 Entry
的 NSManagedObject
子类的实例。
只需使用循环遍历条目
for (Entry *entry in array)
NSLog(@"lat: %@ - long: %@", entry.latitude, entry.longitude);
【讨论】:
不走运。仍然崩溃。 你在谈论两个不同的东西。问题中提到的po array
以及您从 JSON 字符串中获得的数组。前者是Entry
实例的数组,后者是String
的数组。不涉及字典。通常 JSON 应该使用 NSJSONSerialization
反序列化。
对不起。我是开发新手,被这个问题困住了。
抱歉,目前的信息无法回答这个问题。请添加更多信息,例如 JSON 以及您要完成的任务。【参考方案2】:
你有一个字典数组,你需要解析它。
我没有尝试运行此代码,但这应该可以。稍后您可以为 nil 值添加一些安全检查。
NSDictionary *dict = array[0];
NSString *latitude = dict["latitude"];
NSString *longitude = dict["longitude"];
【讨论】:
【参考方案3】:您可以使用键值编码:
[array[0] valueForKey:@"latitude"];
【讨论】:
【参考方案4】:简单地使用objective c快速枚举从ArrayList中获取数据。
for (NSDictionary *dic in array)
NSLog(@"dic values %@",[dic objectForKey:@"data"]);
NSDictionary *data = [dic objectForKey:@"data"];
NSString *lat = [data objectForKey:@"latitude"];
【讨论】:
不起作用。 *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFString objectForKey:]:无法识别的选择器发送到实例 0x7fdc427a7ab0” @HirakBarman 尝试获取 [dic objectForKey:@"data"]。如果你得到然后让我知道。 不会崩溃。 @HirakBarman 你能分享这些数据的来源或分享你的代码吗 @HirakBarman 检查您的数组内容天气是否以 JSON 格式正确显示。您可以使用在线工具进行 JSON 格式验证。以上是关于如何访问字典数组并使用Objective C中的字典对象?的主要内容,如果未能解决你的问题,请参考以下文章