如何访问字典数组并使用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】:

字典似乎是名为 EntryNSManagedObject 子类的实例。

只需使用循环遍历条目

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中的字典对象?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Objective C 转换 JSON 并构建字典

如何保存变量并从两个不同的类中使用它Objective C

如何从 Objective C 中的 NSDictionary 获取键值?

Objective-C数组和字典

如何在 Objective C 中使用托管对象?

Objective - C NSArray不可变数组和NSMutableArray可变数组