#iphone #objective-c #cocoa-touch #ios4 #nsmutabledictionary
#iPhone #objective-c #cocoa-touch #ios4 #nsmutabledictionary
Вопрос:
{
"data": [
{
"data": [
null,
null,
30,
45,
69,
70,
65
],
"title": "title5"
},
{
"data": [
null,
5,
10,
15,
22,
30
],
"title": "title4"
},
{
"data": [
40,
55,
],
"title": "title3"
},
{
"data": [
null,
89,
90,
85
],
"title": "title2"
},
{
"data": [
66,
77,
55,
33,
50,
-6,
-8
],
"title": "title1"
}
],
"x_labels": [
6,
7,
8,
9,
10,
11,
12
]
}
Я хочу, чтобы в моем словаре был один и тот же ключ с именем «data» и «title» для каждого набора значений, которые он содержит, как показано в приведенном выше коде.
Но когда я пытаюсь создать словарь и пытаюсь использовать setValue:forKey:
метод для того же ключа или addEntriesFromDictionary:
он перезаписывает каждый набор данных, и, наконец, я получаю только последний набор данных, который я вставил в свой словарь.
Есть ли способ, которым я могу это сделать?
Ответ №1:
Обратите внимание, что первый объект в словаре самого низкого уровня — это список или массив. Это ключ.
NSMutableArray * dataArr = [NSMutableArray array];
NSArray * x_labelArr = [NSArray arrayWithObjects: ...];
NSMutableDictionary * dict =
[NSMutableDictionary dictionaryWithObjectsAndKeys:
arr, @"data", x_labelArr, @"x_labels", nil];
Теперь вы можете добавить в массив отдельные внутренние словари, каждый из которых имеет одинаковые ключи:
NSDictionary * innerDict =
[NSDictionary dictionaryWithObjectsAndKeys:
someArrayOfData, @"data", someTitle, @"title"];
NSDictionary * innerDict2 =
[NSDictionary dictionaryWithObjectsAndKeys:
someOtherArrayOfData, @"data",
someOtherTitle, @"title"];
[dataArr addObject:innerDict];
[dataArr addObject:innerDict2];
Ответ №2:
Вы можете добавить словари в свой словарь; все словари содержат «данные»-> asdf, «заголовок»-> asdf. Или добавьте массив для элемента «данные» и добавьте к нему. Но, судя по тому, как выглядят ваши данные, более вероятно, что вы хотите это.