Я пытаюсь прочитать файл Plist в NSArray
с использованием initWithContentsOfFile
, как описано hereNSArray initWithContentsOfFile возвращает ноль
Мой код выглядит следующим образом
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:
@"routes" ofType:@"plist" ];
routes = [[NSArray alloc] initWithContentsOfFile:plistPath ];
NSLog:(@"contents of myArray %@", routes);
routes.plist
имеет совершенно простую структуру массива и 2 строки значения внутри
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Root</key>
<array>
<string>1</string>
<string>2</string>
</array>
</dict>
</plist>
Все кажется прекрасным. plistPath
инициализируется с правильным значением, что означает, что файл копируется в комплект и может быть прочитан. Но routes = [[NSArray alloc] initWithContentsOfFile:plistPath ];
возвращает 0x0
значение. Я думаю, что это равно nil
Что не так с моим кодом?
Человек, ты прав. Но в визуальном редакторе Xcode я выбрал тип массива! Смотрите скриншот, который я добавил. Это ошибка Xcode4? –
Nope. У вас есть объект массива с ключом с именем «Root» (который отдает, что ваш plist является «NSDictionary'»). Вы можете добавить дополнительные объекты на этом уровне с разными именами ключей. –
Но выбора нет, Xcode создает dict по умолчанию, и вы не можете его изменить в визуальном редакторе. Только путем редактирования plist в качестве исходного файла. Но хорошо, теперь я знаю об этом. Благодаря! –