我正在将一个旧的Swift 2项目转换为Swift 3.在之前的版本中,我在AppDelegate
中注册了未设置用户默认值的默认值,如下所示:
let defaults = NSUserDefaults.standardUserDefaults()
let defaultValues = [
"stringKey" : "",
"intKey" : 50
]
defaults.registerDefaults(defaultValues as! [String : AnyObject])
Xcode正在帮助转换它,但Xcode中的autoconvert无法解决以下错误:
异构集合文字只能推断为'[String: 任何]';如果这是故意的,则添加显式类型注释
自动更正最终确实有效,但到那时我已经写了大部分问题,所以我只是添加下面的答案而不是删除问题。 (此外,自动转换建议比我在下面提供的答案更加冗长。)
备注
答案 0 :(得分:2)
这是Swift 3的语法。我将它包含在AppDelegate
的上下文中。
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
override init() {
let defaults = UserDefaults.standard
let defaultValues : [String : Any] = [
"stringKey" : "",
"intKey" : 50
]
defaults.register(defaults: defaultValues)
super.init()
}
// ...
}
请记住,这不会设置值,它仅为用户尚未设置时提供一些初始默认值。