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

时间:2012-11-14 12:22:25

标签: objective-c ios nsdictionary nsnumber

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

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

但我不确定NSNumber的语法:

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

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

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

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

感谢您的帮助。

3 个答案:

答案 0 :(得分: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 :(得分:1)

试试这样:

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

答案 2 :(得分:0)

字典中的键值对称为条目。每个条目包含一个表示密钥的OBJECT和一个表示该密钥值的OBJECT。

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

所以,你不能这样做

---附加的 正如schubam提出的那样,你可以收到一个NSString并调用floatValue。

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