如何从iOS中的字典中给出的值中查找键

时间:2014-06-23 11:19:19

标签: ios objective-c nsdictionary nsmutabledictionary

我正在创建一个项目,我坚持从给定值中检索密钥的概念。 我创建了一个tableview,添加了字典值 - 例如" city_names" for key" city_id"。 如果用户选择一个城市,那么我想得到相应的" city_id"为那个城市。

我的表格中有字典

"city":[
    {
        "id":"1",
        "city":"City1"
    },
    {
        "id":"2",
        "city":"City2"
    },
    {
        "id":"3",
        "city":"musat"
    },
    {
        "id":"4",
        "city":"city3"
    },
    {
        "id":"5",
        "city":"City 4"
    }
]

我更关心的是获得选择城市的儿童词典的相应索引。

提前致谢。

3 个答案:

答案 0 :(得分:2)

因此,假设您正在通过其数据源方法填充tableview,并希望在用户选择特定行时引用回模型数据?

在这种情况下,你应该保留一组键和模型字典。然后,您可以使用传递给tableview委托的行从密钥数组中检索密钥,然后从那里获取字典条目的密钥。

这是因为数组具有固定顺序,就像tableview一样,并且您可以按照适合显示的数据的顺序对数组进行排序。字典没有固定的顺序,因此不应该用作模型数据的唯一容器。

这种方法的缺点是您需要维护两个数据结构,因此最好的方法是为模型数据创建自定义类,并使用这些模型对象的单个数组。这种方法还有很多优点。

答案 1 :(得分:2)

试试这个

   int index = [[city valueForKey:@"city"] indexOfObject:@"Selected_City"];
NSString *selected_id = [[city valueForKey:@"id"] objectAtIndex:index];

答案 2 :(得分:0)

根据您的描述开启。

我建议您以Array(NSarray) Dictionaries的形式制作数据。 并根据此UITableViewCell填充您的array

didSelectRowAtIndexPath方法

Dictionaries* dict = [yourArray objectAtIndex:indexPath.row];

NSString * selectedCityId = [dict objectForKey:@"passYourKeyIdentifier"];