Разбор словаря из plist в массив - PullRequest
1 голос
/ 25 августа 2010

Кто-нибудь может помочь с загрузкой объектов словаря правильно в массив. Загрузка plist в объект словаря работает нормально, и я смог вывести некоторые из них в командную строку. Проблема заключается в том, что этот способ загрузки объединяет каждое имя и цену в одну ячейку в массиве. IE: Можно ли загрузить их отдельно? Или, может быть, в каком-то двумерном массиве с одной ячейкой для имени и другой для цены.

Заранее спасибо.

Тест является изменяемым массивом.

NSString* path = [[NSBundle mainBundle] pathForResource:@"property" ofType:@"plist"];
NSDictionary* amountData =  [NSDictionary dictionaryWithContentsOfFile:path];
if (amountData) {
    Test = [NSMutableArray arrayWithArray: amountData];
}

И моя структура списков:

<dict>
<key>New item</key>
<dict>
    <key>Name</key>
    <string>Property 1</string>
    <key>Price</key>
    <string>100000</string>
</dict>
<key>New item - 2</key>
<dict>
    <key>Name</key>
    <string>Property 2</string>
    <key>Price</key>
    <string>300000</string>
</dict>
<key>New item - 3</key>
<dict>
    <key>Name</key>
    <string>Property 3</string>
    <key>Price</key>
    <string>500000</string>
</dict>
<key>New item - 4</key>
<dict>
    <key>Name</key>
    <string>Property 4</string>
    <key>Price</key>
    <string>600000</string>
</dict>
</dict>

Ответы [ 3 ]

1 голос
/ 25 августа 2010

Почему бы вам напрямую не сохранить его как массив? Ваш файл будет выглядеть так:

<array>
    <dict>...</dict>
    <dict>...</dict>
    <dict>...</dict>
</array>

И вы могли бы сделать что-то вроде этого:

NSArray *amountData =  [NSArray arrayWithContentsOfFile: path];

В противном случае правильный способ сделать это был бы следующим:

Test = [NSMutableArray arrayWithArray: [amountData allValues]];
0 голосов
/ 25 августа 2010
NSString* path = [[NSBundle mainBundle] pathForResource:@"property" ofType:@"plist"];
NSDictionary* amountData =  [NSDictionary dictionaryWithContentsOfFile:path];
if (amountData) {
    Test = [NSMutableArray arrayWithArray: [amountData allValues]];
}
0 голосов
/ 25 августа 2010

Вы делаете вызов

Test = [NSMutableArray arrayWithArray: amountData];

, когда amountData - это NSDictionary, а не массив ... Как и предположил Макс, вы можете просто сохранить список свойств массива вместо списка словаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...