iPhone: невозможно получить доступ ко всем значениям из файла .plist - PullRequest
0 голосов
/ 21 марта 2011

У меня есть довольно простой файл root.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>StringsTable</key>
    <string>Root</string>
    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>Type</key>
            <string>PSGroupSpecifier</string>
            <key>Title</key>
            <string>User Info</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSTextFieldSpecifier</string>
            <key>Title</key>
            <string>Username</string>
            <key>Key</key>
            <string>username_preference</string>
            <key>DefaultValue</key>
            <string></string>
            <key>IsSecure</key>
            <false/>
            <key>KeyboardType</key>
            <string>Alphabet</string>
            <key>AutocapitalizationType</key>
            <string>None</string>
            <key>AutocorrectionType</key>
            <string>No</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSTextFieldSpecifier</string>
            <key>Title</key>
            <string>Password</string>
            <key>Key</key>
            <string>password_preference</string>
            <key>DefaultValue</key>
            <string></string>
            <key>IsSecure</key>
            <true/>
            <key>KeyboardType</key>
            <string>Alphabet</string>
            <key>AutocapitalizationType</key>
            <string>None</string>
            <key>AutocorrectionType</key>
            <string>No</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSGroupSpecifier</string>
            <key>Title</key>
            <string>Application Info</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSTitleValueSpecifier</string>
            <key>Title</key>
            <string>Version</string>
            <key>Key</key>
            <string>api_version_preference</string>
            <key>DefaultValue</key>
            <string>2.0</string>
            <key>Value</key>
            <string>2.0</string>
        </dict>
    </array>
</dict>
</plist>

Все поля отображаются при переходе на соответствующую страницу настроек в приложении настроек iphone, но я не могу получить доступapi_version_preference из моего приложения.

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

NSLog(@"defs: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);

Может кто-нибудь помочь?:)

1 Ответ

1 голос
/ 21 марта 2011

Вы забыли указать значения по умолчанию для NSUserDefaults. NSUserDefaults не сохраняет настройки, если вы не изменили (то есть сохранили) их.

создать NSDictionary значений по умолчанию и установить его с [[NSUserDefaults standardUserDefaults] registerDefaults:userDefaultsDefaults];

как это:

NSDictionary *userdefaultsDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
                                      @"2.0", @"api_version_preference",
                                      nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:userdefaultsDefaults];

сделать это со всеми настройками, которые вы используете из NSUserDefaults

...