【发布时间】:2016-07-15 05:16:38
【问题描述】:
我在我的应用中添加了一个设置包,在 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,尽管我在“设置”应用中设置了显式值。
我看到了这个帖子 (iPhone App : How to get default value from root.plist?),其中有人发布了一段 Objective-C 代码,该代码手动将 Root.plist 文件直接加载到 NSMutableDictionary 并调用 NSUserDefaults.standardUserDefaults().registerDefaults 但这似乎是一个 hack(我无法让它在 Swift 中工作,因为编译器说 stringByAppendingPathComponent 不再存在)
为什么NSUserDefaults 没有从“设置”应用中获取设置?
【问题讨论】:
标签: ios swift settings nsuserdefaults