相关疑难解决方法(0)

即使您未打开"设置应用",也可以在Settings.bundle默认设置中进行设置

我有一个带有settings.bundle的iPhone应用程序,可以处理我的应用程序的各种设置.我可以在root.plist文件中设置默认值(使用DefaultValue属性),但这些只在用户第一次打开设置应用程序时使用.有没有办法在您的应用程序安装时写出这些值?我知道我可以编写代码来检查我的应用程序的第一次启动,然后将它们写出来,但之后它们位于两个不同的地方.

以下是我的root.plist中的一个条目作为示例:

<dict>
    <key>Type</key>
    <string>PSToggleSwitchSpecifier</string>
    <key>Title</key>
    <string>Open To Top Location</string>
    <key>Key</key>
    <string>open_top_location</string>
    <key>DefaultValue</key>
    <string>YES</string>
    <key>TrueValue</key>
    <string>YES</string>
    <key>FalseValue</key>
    <string>NO</string>
</dict>
Run Code Online (Sandbox Code Playgroud)

最终的结果应该是,如果我要求'open_to_top_location',我会得到一个YES,而不是在用户第一次打开Settings应用程序之前根本不存在.

有任何想法吗?

iphone cocoa-touch

55
推荐指数
4
解决办法
3万
查看次数

设置包值返回nil

我在我的应用程序中添加了一个Settings包,在Xcode中它出现在我的项目树视图的根目录中.

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>Service</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSTextFieldSpecifier</string>
            <key>Title</key>
            <string>Hostname</string>
            <key>Key</key>
            <string>service_hostname</string>
   <!-- and so on -->
Run Code Online (Sandbox Code Playgroud)

当我在iOS上打开"设置"应用程序时,条目显示在底部,我可以完美地显示和编辑我的设置.

但是我无法从代码中检索这些值.这是我的代码:

static func loadSettings() {

    let ud = NSUserDefaults.standardUserDefaults()
    ud.synchronize()

    Settings.hostName = ud.stringForKey("service_hostname")
    // etc
}
Run Code Online (Sandbox Code Playgroud)

我也试过ud.objectForKeyud.valueForKey-都返回nil为好.

设置Settings.hostNameXcode调试器报告后,nil尽管我在"设置"应用中设置了显式值,但它仍具有值.

我看到了这个帖子(iPhone应用程序:如何从root.plist获取默认值?),其中有人发布了一大块Objective-C代码,手动将Root.plist文件直接加载到一个NSMutableDictionary和调用中,NSUserDefaults.standardUserDefaults().registerDefaults但这似乎是一个黑客(我可以'让它在Swift中工作,因为编译器说它stringByAppendingPathComponent不再存在了)

为什么不 …

settings nsuserdefaults ios swift

8
推荐指数
3
解决办法
4119
查看次数

标签 统计

cocoa-touch ×1

ios ×1

iphone ×1

nsuserdefaults ×1

settings ×1

swift ×1