dictionaryWithContentsOfFile, возвращающий ноль из моего файла списка свойств - PullRequest
7 голосов
/ 09 октября 2010

Я учусь использовать plist-файлы для хранения данных в моем приложении для iPhone.Я читал кучу вопросов о plist и dictionaryWithContentsOfFile на этом сайте, но не вижу, что я делаю неправильно.

Следующая строка возвращает nil («Словарь является нулевым» дляconsole).

NSLog(@"The dictionary is %@",[NSDictionary dictionaryWithContentsOfFile:@"myFile"]);

Файл myFile.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">
<dict>
    <key>name</key>
    <string>john</string>
    <key>aname</key>
    <string>jen</string>
</dict>
</plist>

Я что-то здесь упускаю?

1 Ответ

36 голосов
/ 09 октября 2010

Из документации ...

+ (id)dictionaryWithContentsOfFile:(NSString *)path

Параметры

путь

Полный или относительный путь.Файл, идентифицированный путем, должен содержать строковое представление списка свойств, корневым объектом которого является словарь.

Возвращаемое значение

Новый словарь, содержащий словарь по путиили nil, если есть ошибка файла или если содержимое файла является недопустимым представлением словаря.

Итак, вам, вероятно, нужно составить полный путь к вашему plist-файлу (или передатьв соответствующем относительном пути. Я был бы очень удивлен, если «myFile» является подходящим относительным путем).Если вы строите правильный путь, но все равно получаете обратно nil, то, вероятно, у вас неверный plist-файл.

Самый простой способ получить путь к файлу в папке ресурсов - вот так:

NSString * plistPath = [[NSBundle mainBundle] pathForResource:@"myFile" ofType:@"plist"];

Это создаст путь для файла с именем "myFile.plist" внутри вашей папки Resources.

...