UserDefaults 中的 object(forKey:) 和 value(forKey:) 有什么区别?
What is the difference between object(forKey:) and value(forKey:) in UserDefaults?
我已经使用 let userDefaults = UserDefaults.standard
设置了一些用户默认值,当我检索它们时,我可以使用以下任何一个:
jobTextField.text = userDefaults.object(forKey: "job") as? String
或者我可以使用
jobTextField.text = userDefaults.value(forKey: "job") as? String
在什么情况下这会有所不同?很高兴知道我什么时候不能使用其中之一。
非常感谢:)
value(forKey:)
来自 key-value coding,而不是 UserDefaults
.
的直接方法
切勿在 UserDefaults
或 Dictionary
或任何其他 class 上使用 value(forKey:)
,除非您清楚地了解需要使用键值编码来获得所需的结果.
当你没有这样的需求时,使用问题class提供的标准访问方式(如UserDefaults object(forKey:)
.
1。 value(forKey:)
两者完全不同。 value(forKey:)
不是 UserDefaults-only
方法。它由 NSKeyValueCoding
启用,根据 Apple 的文档:
NSKeyValueCoding
is an informal protocol that objects adopt to provide indirect access to
their properties. When an object is key-value coding compliant, its properties are addressable via string parameters through a concise, uniform messaging interface.
碰巧 UserDefaults
是 NSKeyValueCoding
兼容的,所以人们已经开始(不一定以正确的方式)使用它来访问 UserDefaults
。
2。 object(forKey:)
这是访问 UserDefaults
属性的正确方法。除非你没有很好的理由使用 value(forKey:)
,否则请始终使用 object(forKey:)
或 UserDefaults
的其他有效方法(即 string(forKey:)
)。
希望这能解决问题!
我已经使用 let userDefaults = UserDefaults.standard
设置了一些用户默认值,当我检索它们时,我可以使用以下任何一个:
jobTextField.text = userDefaults.object(forKey: "job") as? String
或者我可以使用
jobTextField.text = userDefaults.value(forKey: "job") as? String
在什么情况下这会有所不同?很高兴知道我什么时候不能使用其中之一。
非常感谢:)
value(forKey:)
来自 key-value coding,而不是 UserDefaults
.
切勿在 UserDefaults
或 Dictionary
或任何其他 class 上使用 value(forKey:)
,除非您清楚地了解需要使用键值编码来获得所需的结果.
当你没有这样的需求时,使用问题class提供的标准访问方式(如UserDefaults object(forKey:)
.
1。 value(forKey:)
两者完全不同。 value(forKey:)
不是 UserDefaults-only
方法。它由 NSKeyValueCoding
启用,根据 Apple 的文档:
NSKeyValueCoding
is an informal protocol that objects adopt to provide indirect access to their properties. When an object is key-value coding compliant, its properties are addressable via string parameters through a concise, uniform messaging interface.
碰巧 UserDefaults
是 NSKeyValueCoding
兼容的,所以人们已经开始(不一定以正确的方式)使用它来访问 UserDefaults
。
2。 object(forKey:)
这是访问 UserDefaults
属性的正确方法。除非你没有很好的理由使用 value(forKey:)
,否则请始终使用 object(forKey:)
或 UserDefaults
的其他有效方法(即 string(forKey:)
)。
希望这能解决问题!