0

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

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

但不确定 NSNumber 的语法:

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

我知道我在上面的代码中使用 NSStrings 不起作用。我将如何更改它以使用 NSNumber?

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

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

谢谢你的帮助。

4

3 回答 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];
于 2012-11-14T12:32:01.830 回答
1

试试这样:

float latFromTable = [[[displayItems objectForIndex:indexPath.row]
                                       [objectForKey:@"coords"]objectForKey:@"lat"] floatValue];
于 2012-11-14T12:34:16.550 回答
0

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

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

所以,你不能这样做

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

---ADDED2 我已经更准确地阅读了日志。您有一个具有 lat 和 long 属性的对象。所以,它不是二级词典。尝试接收接口名称并获取这些接口的对象。

于 2012-11-14T12:33:19.813 回答