iPhone: Как создать NSMutableDictionary, который содержит несколько наборов данных с одним и тем же ключом? - PullRequest
1 голос
/ 22 мая 2011
{

"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:, он перезаписывает каждый набор данных, и, наконец, я получаю только последний набор данных, который я вставил в свой словарь.

Есть ли способ, я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 22 мая 2011

Обратите внимание, что первый объект в словаре самого низкого уровня является списком или массивом.Это ключ.

 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];
0 голосов
/ 22 мая 2011

Вы можете добавить словари в свой словарь; все словари содержат «данные» -> asdf, «заголовок» -> asdf. Или добавьте массив для элемента данных и добавьте к нему. Но из того, как выглядят ваши данные, более вероятно, что вы захотите это .

...