#objective-c #nsdictionary
#objective-c #nsdictionary
Вопрос:
Итак, у меня есть следующая структура в JSON, которая, как я понимаю, представляет собой массив объектов пары ключ / значение:
{
"notification": [
{
"uid": "20",
"count": "4"
},
{
"uid": "48",
"count": "0"
},
{
"uid": "49",
"count": "0"
},
{
"uid": "53",
"count": "0"
}
]
}
Анализ этого с помощью SBJson приведет к созданию коллекции словарей с одной парой ключ / значение в каждом.
Я хотел бы «объединить» все эти словари в один словарь со многими парами ключ / значение. Кстати, не беспокоясь о дубликатах.
Каков наилучший способ сделать это? Как я могу перебирать NSDictionary, получая доступ к каждому элементу по одному и извлекая его ключ и значение?
Есть идеи по этому поводу?
Спасибо.
—Конор
Ответ №1:
Просто выполните итерацию по уже существующему массиву NSDictionary
s. В этом и заключается удобство JSON: вы легко получаете полезные структуры данных из строки вашего канала.
NSArray *notifications = [[theFeedString JSONValue] objectForKey:@"notification"];
// or whatever JSON helper you are using
for (NSDictionray *dict in notifications) {
NSInteger uid = [[dict objectForKey:@"uid"] intValue];
NSInteger count = [[dict objectForKey:@"count"] intValue];
// do something with uid and count
}
Комментарии:
1. Спасибо за это .. довольно очевидно и просто, но в мою защиту скажу, что это была пятница: D
Ответ №2:
- Создайте пользовательское уведомление класса со свойствами
uid
иcount
. - Чтобы выполнить итерацию по NSDictionary / NSArray, используйте
for
инструкцию. Создайте и инициализируйте свой объект уведомления с проанализированными даннымиjson
на каждой итерации - Добавьте этот объект в новый массив или словарь (для словаря вы можете создать ключ, который будет таким же, как
uid
, например)