我应该将 UserDefaults 声明为变量吗?

Should I declare UserDefaults as a variable or not?

我担心是否应该将 UserDefaults 声明为变量,如以下代码:

模式A

let userDefaults = UserDefaults.standard

if let userDefaults.object(forKey: "isFirstLaunch") {

}

模式B

if let UserDefaults.standard.bool(forKey: "isHardModeEnabled") as Bool {

}

哪种方式最好,两种方式有什么区别吗?

两种方式都是正确的,你可以随意使用它,只是在模式A中会多定义一个变量。

SwiftyUserDefaults Modern Swift API for NSUserDefaults.

这两种都是使用 UserDefaults 的正确方法,这取决于您的要求,比如您可以在哪里使用 Pattern APattern B,如果您想要使用 UserDefaults.standard ViewController 中的许多地方然后你可以声明

let userDefaults = UserDefaults.standard

在您的方法之外并在您的 UIViewController class 中的任何地方访问它,或者您可以将其声明为全局的,然后您可以在项目的任何地方使用它。

但如果你没有太多用处,那么你可以直接使用

if let UserDefaults.standard.bool(forKey: "isHardModeEnabled") as Bool {

}

其实两者是一样的

UserDefaults.standard 将 return UserDefaults 的单例实例。

您可以选择任何一种方法以方便使用。

如果需要经常使用userDefaults,可以将UserDefaults.standard缩短成一个变量。

let userDefaults = UserDefaults.standard

if let defaults.object(forKey: "isFirstLaunch") {

}