在 UserDefaults 中注册多个值类型 Swift 3

Register multiple value types in UserDefaults with Swift 3

我正在将一个旧的 Swift 2 项目转换为 Swift 3。在以前的版本中,我在 AppDelegate 中注册了默认值,用于未设置的用户默认值,如下所示:

let defaults = NSUserDefaults.standardUserDefaults()
let defaultValues = [
    "stringKey" : "",
    "intKey" : 50
]
defaults.registerDefaults(defaultValues as! [String : AnyObject])

Xcode 正在帮助转换它,但 Xcode 中的自动转换因以下错误而不起作用:

Heterogenous collection literal could only be inferred to '[String : Any]'; add explicit type annotation if this is intentional

自动更正终于奏效了,但那时我已经写完了这个问题的大部分内容,所以我只会在下面添加答案而不是删除问题。 (此外,自动转换建议比我在下面提供的答案更冗长。)

备注

这是 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()
    }

    // ...
}

请记住,这不会设置值,它只会为用户尚未设置的值提供一些初始默认值。