我担心是否应该像以下代码一样将UserDefaults声明为变量:
模式A
let userDefaults = UserDefaults.standard
if let userDefaults.object(forKey: "isFirstLaunch") {
}
B模式
if let UserDefaults.standard.bool(forKey: "isHardModeEnabled") as Bool {
}
哪种方法最好?这两种方法有什么区别?
答案 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));
的正确方法,这取决于您的要求,例如可以在哪里使用UserDefaults
和Pattern 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") {
}