Загрузка NSArray из файла .plist - PullRequest
1 голос
/ 07 сентября 2011

Хорошо, я знаю, что этот вопрос кажется очень простым, но я нигде не могу найти решение своей проблемы -

У меня есть файл .plist в моем проекте под названием «чувств».Мой файл plist читает:

<plist version="1.0">
<dict>
    <key>feelings</key>
    <array>
        <string>Happy</string>
        <string>Sad</string>
    </array>
</dict>
</plist>

В файле .m под - (void) ViewDidLoad;Я пытаюсь получить содержимое списка, используя следующий код:

NSString *path = [[NSBundle mainBundle] pathForResource:@"feelings" ofType:@"plist"];
NSArray *tempArray = [[NSArray alloc] initWithContentsOfFile:path];

self.feelingsArray = tempArray;
[tempArray release]; 

Однако, похоже, я не загружаю массив из файла .plist и не выполняю следующий код:

NSLog(@"feelings: %@", feelings); 

возвращает (null)

Может кто-нибудь выяснить, где я иду не так?Мне кажется, все хорошо из того, над чем я работал раньше.

Ответы [ 2 ]

3 голосов
/ 07 сентября 2011

Возвращает объект словаря, а не массив,

NSString *path = [[NSBundle mainBundle] pathForResource:@"feelings" ofType:@"plist"];
NSDictionary *tempDict = [[NSDictionary alloc] initWithContentsOfFile:path];
NSLog(@"Feelings: %@",tempDict);
[tempDict release]; 
2 голосов
/ 07 сентября 2011

Ваш верхний уровень файла plist - это словарь, а не массив.Вы должны использовать NSDictionary вместо NSArray:

NSDictionary *tempDict = [[NSDictionary alloc] initWithContentsOfFile:path];
self.feelingsArray = [tempDict objectForKey:@"feelings"];
[tempDict release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...