plist в создании Xcode - PullRequest
       0

plist в создании Xcode

3 голосов
/ 14 июля 2011

Когда я создаю простое приложение для plist, показанное по ссылке ниже:

http://iosdevelopertips.com/data-file-management/reading-a-plist-into-an-nsarray.html

Когда я отлаживаю его ... Я получаю путь к моему файлу plist.Но когда я использую следующий оператор

// Build the array from the plist  
NSMutableArray *array2 = [[NSMutableArray alloc] initWithContentsOfFile:path];

, я не получаю никакого значения в array2 ... В чем может быть проблема?

Ответы [ 4 ]

6 голосов
/ 16 июля 2011

Вот окончательное решение, которое я получил за plist ....

Когда вы создаете свой plist-файл с первым элементом как Array .., тогда его XML-содержимое будет выглядеть так:

<?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>Firecracker</string>
        <string>Lemon Drop</string>
        <string>Mojito</string>
    </array>
</dict>
</plist>

Здесь у вас есть ненужный тег, вместо которого мы должны иметь, поскольку вашим корневым элементом должен быть Array ... потому что вы берете объект NSMutableArray ...

так что ваш файл plist должен быть таким

<?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">
    <array>
        <string>Firecracker</string>
        <string>Lemon Drop</string>
        <string>Mojito</string>
    </array>
</plist>

Я проверил, что он работает нормально ....

1 голос
/ 14 июля 2011

Проблема может быть

  1. Файл не существует по указанному пути, вы получите nil в array2.
  2. Файл существует, но не может быть правильно прочитан из-за повреждения формата, и вы также получаете nil в array2.
  3. Файл существует и имеет правильный формат, но в нем нет значений, вы получаете пустой массив.

При использовании NSString *path = [[NSBundle mainBundle] pathForResource:@"DrinkArray" ofType:@"plist"]; предполагается, что у вас есть правильно сформированный plist-файл с именем "DrinkArray" ('DrinkArray.plist') внутри пакета приложения. Убедитесь, что ваш файл также скопирован в комплект приложения (отметьте это в XCode, щелкните ваш проект, затем фазы сборки, ваш файл должен появиться в «Copy Bundle Ressources»).

Полагаю, вы получите nil в качестве пути к файлу и, следовательно, в array2. Попробуйте записать вашу строку пути, чтобы проверить это.

0 голосов
/ 10 июля 2014

В xcode 5> убедитесь, что файл находится в области исходников вашей компиляции.enter image description here

0 голосов
/ 03 февраля 2012

Я думаю, вы можете попробовать что-то вроде этого:

    NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
    NSMutableArray *array = [dict objectForKey:@"Root"];

    // Show the string values  
    for (NSString *str in array)
    {
        NSLog(@"--%@", str);
    }

Если это помогло, пожалуйста, напишите. :)

Cheers, Камиль

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