2013-05-03 2 views
0

У меня есть NSMutableDictionary который содержит объекты типа строки так:Индексирование NSMutableDictiobary?

{ 
    { 
     {"ID":"23"}, 
     {"NAME":"Ted"} 
    }, 
    { 
     {"ID":"46"}, 
     {"NAME":"Karren"} 
    }, 
    { 
     {"ID":"6"}, 
     {"NAME":"Phillip"} 
    } 
} 

Мне нужен способ, чтобы получить доступ к объекту с ID #x в индексированной образом. Теперь, поскольку объект с ID = 46 находится в индексе # 1 Мне нужен способ сделать словарь по-прежнему иметь свои объекты в своем индексе, как есть, но можно ли добавить ключ к этому объекту? как:

"6":"{ 
    {"ID":"6"}, 
    {"NAME":"Phillip"} 
}" 

Если можно показать код. В противном случае, как я могу сделать это по-другому. Thanks

+0

Вы можете что-то сделать с этой структурой. У вас должен быть массив словарей. Можете ли вы подтвердить это? Что-то вроде этого было бы более уместным [JSON Structure] (http://pastebin.com/PVxRwTJy) – Anupdas

+0

Глупо структурировать JSON следующим образом: '{{" ID ":" 23 "}, {" NAME ":" Ted "}}'. Скорее это должно выглядеть так: '{" ID ":" 23 "," NAME ":" Ted "}' - Поместить связанные элементы в один и тот же объект JSON. Кто определяет этот синтаксис JSON ??? –

ответ

0

Как насчет использования предикатов?

NSArray *resultArray = [[[myDictionary allValues] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"ID == %@", @"6"]]; 

Вы получите все свои словарные значения, а также использовать предикат возвращает один массив элемент со значением, которую вы искали

(код не проверял, но должно работать)

+0

, но если ключ словаря всегда совпадает с вашим «ID», я не вижу смысла –

0

Прежде всего вам нужно что-то сделать с помощью структуры,

[ 
    { 
     "ID": 23, 
     "Name": "Ted" 
    }, 
    { 
     "ID": 46, 
     "Name": "Karen" 
    }, 
    { 
     "ID": 6, 
     "Name": "Philip" 
    } 
] 

Это упростит вашу работу. Вы можете легко искать/сортировать его на основе ID или Name.

//All users array 
NSArray *users = .... 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ID = %d",userID]; 

//Find User against a user id 
NSDictionary *user = [[users filteredArrayUsingPredicate:predicate] lastObject]; 
+0

Не имеете в виду «поиск», а не «сортировку»? –

+0

@HotLicks Я имел в виду и то, и другое, проще создать sortDescriptor с идентификатором или именем. А также легко искать по предикату. – Anupdas

Смежные вопросы