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

时间:2019-01-10 04:56:13

标签: ios swift nsuserdefaults

我担心是否应该像以下代码一样将UserDefaults声明为变量:

模式A

let userDefaults = UserDefaults.standard

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

}

B模式

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

}

哪种方法最好?这两种方法有什么区别?

3 个答案:

答案 0 :(得分:1)

这都是使用const operators = ['+', '-', '*', '/', '==', '===']; const isOperator = (e) => operators.includes(e); let exp = ["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]; console.log(exp.map(x => isOperator(x) ? x + " is operator" : x));的正确方法,这取决于您的要求,例如可以在哪里使用UserDefaultsPattern A,就像您想在许多地方使用Pattern B在您的UserDefaults.standard中,您可以声明

ViewController

在方法之外,并在let userDefaults = UserDefaults.standard 类中的任何位置访问它,或者可以将其声明为全局变量,并且可以在项目中的任何位置使用它。

但是如果您没有太多使用它,则可以使用

UIViewController

答案 1 :(得分:0)

这两种方法都是正确的,除了模式A中将定义一个额外的变量外,您可以以任何方式使用它。

  

SwiftyUserDefaults用于NSUserDefaults的现代Swift API。

答案 2 :(得分:0)

实际上两者是相同的。

UserDefaults.standard将返回UserDefaults的单例实例。

为方便起见,您可以选择任何一种方法。

如果需要频繁使用userDefaults,可以将UserDefaults.standard缩短为变量。

let userDefaults = UserDefaults.standard

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

}