我添加了一个设置包到我的应用程序,并在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 -->
当我打开设置应用程序在iOS上的条目出现在底部,我可以显示和编辑我的设置完全正常。
但是我无法从代码中检索这些值。这里是我的代码:
static func loadSettings() {
let ud = NSUserDefaults.standardUserDefaults()
ud.synchronize()
Settings.hostName = ud.stringForKey("service_hostname")
// etc
}
我也试过ud.objectForKey
和ud.valueForKey
- 都返回nil
为好。
设置Settings.hostName
之后,Xcode调试器报告它的值为nil
,尽管我在Settings应用程序中设置了显式值。
我看到这个线程(iPhone App : How to get default value from root.plist?),其中有人张贴的Objective-C代码块是直接手动加载Root.plist
文件为NSMutableDictionary
,并调用NSUserDefaults.standardUserDefaults().registerDefaults
,但似乎像一个黑客攻击(我不能让它开始工作在Swift中,因为编译器说stringByAppendingPathComponent
不存在了)
为什么NSUserDefaults
从Settings应用程序中获取设置?
我觉得我疯了。搜索一个很长一段时间的解决方案!这是为什么发生?有谁知道? –
@戴这不适合我,它给零价值..我错过了什么? – mm24
@ mm24“它给出了一个零值” - 这就是我发布的内容,为什么解决方案是检查零值并在代码中提供默认值。 – Dai