Array не загружает данные из plist - PullRequest
6 голосов
/ 10 апреля 2011

Я не уверен, что именно является моей проблемой, так как я использовал этот метод некоторое время и никогда не было этой проблемы.

В основном, как говорится в названии. Этот код загружает данные из списка, расположенного в группе «Ресурсы»

NSString *myFile = [[NSBundle mainBundle] pathForResource:@"myList" ofType:@"plist"];
myArray = [[NSArray alloc]initWithContentsOfFile:myFile];
NSLog(@"%@", myArray);

Отображается (ноль). Кто-нибудь знает почему?

У меня в том же ViewController есть еще одна настройка, и она работает просто отлично. Этот конкретный список не загружается, однако. Я также даже удалил список и просто создал дубликат из другого, чтобы убедиться, что это не проблема структуры.

Я делаю это неправильно? Должен ли я использовать FileManager?

ОБНОВЛЕНИЕ ---------------------------------------------- ---------------------------

Хорошо, я не могу поверить в то, что собираюсь сказать. лол

Я использую XCode 4, способ редактирования списков в Xcode отличается от Xcode 3.x. Как и в более ранних версиях, вы можете выбрать корневой список списков, который вы хотите получить (массив, словарь и т. Д.). Моя проблема заключалась в том, что список, который я пытался загрузить в NSArray, фактически был структурирован толковый словарь. Однако я никогда не видел этого в XCode, и я понятия не имею, как это увидеть, кроме просмотра содержимого с помощью TextEdit или какого-либо другого текстового редактора.

Довольно глупо, должен сказать. Кто-нибудь знает, почему XCode 4 не показывает корень plist, как XCode 3.x?

XCode 3.x: http://dl.dropbox.com/u/919254/XCode3.png

XCode 4: http://dl.dropbox.com/u/919254/Screen%20shot%202011-04-10%20at%202.30.35%20AM.png

Ответы [ 3 ]

3 голосов
/ 10 апреля 2011

Используйте словарь вместо. У меня было неопределенное поведение с NSArrays и списками свойств. например,

NSString *myFile = [[NSBundle mainBundle] pathForResource:@"myList" ofType:@"plist"];
NSMutableDictionary* myDict = [[NSMutableDictionary alloc]initWithContentsOfFile:myFile];
NSLog(@"%@", myDict);
1 голос
/ 01 мая 2011

У меня была похожая ситуация. Решение:

  1. выбрать * .plist в дереве
  2. вызов контекстного меню
  3. выберите «Открыть с помощью внешнего редактора»
  4. будет виден корень - измените «Класс» на «Массив»
  5. 1012 * сохранить *
0 голосов
/ 10 апреля 2011

То, что у вас есть, выглядит правильно.Убедитесь, что файл находится в правильном каталоге и имеет содержимое.Возможно, вы захотите NSLog myFile, пока вы у него.

...