我添加了一個設置包到我的應用程序,並在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