【问题标题】:iPhone: Can't access all value from .plist fileiPhone:无法访问 .plist 文件中的所有值
【发布时间】:2011-03-21 10:31:40
【问题描述】:

我有一个非常简单的 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]);

有人可以帮忙吗? :)

【问题讨论】:

    标签: iphone plist nsuserdefaults


    【解决方案1】:

    您忘记为 NSUserDefaults 提供默认值。如果您没有更改(即保存)设置,则 NSUserDefaults 不会存储该设置。

    创建一个默认值的 NSDictionary 并将其设置为 [[NSUserDefaults standardUserDefaults] registerDefaults:userDefaultsDefaults];

    像这样:

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

    使用您在 NSUserDefaults 中使用的所有设置来执行此操作

    【讨论】:

    • 谢谢,这解决了问题:)
    猜你喜欢
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多