Я создал простое приложение на Swift, которое содержит WebViewControl
. Благодаря SettingsBundle
пользователь может указать URL-адрес, который затем открывается в WebView. 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>PSTextFieldSpecifier</string>
<key>Title</key>
<string>URL</string>
<key>Key</key>
<string>app_url</string>
<key>DefaultValue</key>
<string>https://myurl.com</string>
<key>IsSecure</key>
<false/>
<key>KeyboardType</key>
<string>URL</string>
<key>AutocapitalizationType</key>
<string>None</string>
<key>AutocorrectionType</key>
<string>No</string>
</dict>
</array>
</dict>
</plist>
Это нормально работает. Однако при попытке получить app_url
в Swift у меня возникает проблема.
override func viewDidLoad() {
super.viewDidLoad()
registerSettingsBundle()
print("retrieving key")
if let appUrl = UserDefaults.standard.string(forKey: "app_url") {
print("got it " + appUrl)
}
}
func registerSettingsBundle(){
let appDefaults = [String:AnyObject]()
UserDefaults.standard.register(defaults: appDefaults)
}
Это выводит на консоль retrieving key
, но не выводит второй оператор печати.
Некоторое время назад он работал, но недавнее обновление сломало его. Что я делаю неправильно? API как-то изменился? Я прочитал документацию Apple по UserDefaults, но пока мне это не помогло .
Редактировать в отношении marked as duplicate
. Очень важно, чтобы пользователь мог изменять app_url
с помощью приложения "Настройки" в iOS. Недостаточно просто прочитать файл plist как dict. Извините, я впервые экспериментирую с приложениями для iOS.
UserDefaults
из вашего.plist
файла? - person Dávid Pásztor   schedule 10.10.2018registerSettingsBundle
, но все еще не могу получить URL-адрес. Есть другие идеи? - person dislick   schedule 10.10.2018object(forKey
проверить, есть ли вообще значение. - person vadian   schedule 10.10.2018if let appUrl = UserDefaults.standard.object(forKey: "app_url") { print("got it") }
не печатаетgot it
. - person dislick   schedule 10.10.2018UserDefaults
. - person vadian   schedule 10.10.2018