如何使用 objectForKey 访问 NSDictionary 中的数据

问题描述 投票:0回答:3

我正在尝试访问字典中的数据。当数据是如下字符串时,我可以访问数据:

cell.textLabel.text = [[item objectForKey:@"merchant"]objectForKey:@"name"];

但不确定 NSNumber 的语法:

NSNumber* latFromTable = [[displayItems objectAtIndex:indexPath.row]
                                           [objectForKey:@"coords"]objectForKey:@"lat"];

我知道我在上面的代码中使用了 NSStrings,这是行不通的。我如何改变它以与 NSNumber 一起使用?

字典中的数据如下所示。 objectForKey 是“坐标”。我想要访问项目 1 和 2(纬度和经度)

 "coords": {
        "lat": 52.5032,
        "lng": 13.3445

感谢您的帮助。

objective-c ios nsdictionary nsnumber
3个回答
2
投票

以下代码的问题是括号不匹配:

NSNumber* latFromTable = [[displayItems objectAtIndex:indexPath.row]
                                           [objectForKey:@"coords"]objectForKey:@"lat"];

所以将其更改为:

float latFromTable = (float)[[[displayItems objectAtIndex:indexPath.row]
                                           objectForKey:@"coords"]objectForKey:@"lat"];
NSNumber *value = [NSNumber numberWithFloat:latFromTable];

1
投票

尝试这样:

float latFromTable = [[[displayItems objectForIndex:indexPath.row]
                                       [objectForKey:@"coords"]objectForKey:@"lat"] floatValue];

0
投票

字典中的键值对称为条目。每个条目由一个代表键的 OBJECT 和第二个代表该键值的 OBJECT 组成。

NSInteger 不是一个对象(它只是一个 int 值)。

所以,你不能这样做

---添加 正如 schubam 所建议的,您可以接收一个 NSString 并调用 floatValue。

---添加2 我已经更准确地阅读了日志。您有一个具有纬度和经度属性的对象。因此,它不是二级词典。尝试接收接口名称并获取这些接口的对象。

© www.soinside.com 2019 - 2024. All rights reserved.