NSUserDefaults
在iOS 10 SDK中似乎不再是一个类:
let defaults = NSUserDefaults.standardUserDefaults()
这个无法编译。这个类被移除了吗?
(这是一个标准问答对,以防止重复提问的洪水)
NSUserDefaults
已经更名为 UserDefaults
。 standardUserDefaults()
已经更名为 standard()
.
let defaults = UserDefaults.standard
现在这个功能可以正常运作。
更精确地使用Swift-3中的UserDefaults:
//To save the string
let userDefaults = UserDefaults.standard
userDefaults.set( "String", forKey: "Key")
//To retrieve from the key
let userDefaults = UserDefaults.standard
let value = userDefaults.string(forKey: "Key")
print(value)
Foundation.
- Roland T.@JAL的回答是正确的,但可能过于具体。
在Swift 3中,许多API都被重新命名。大多数Foundation类型(其中包括NSUserDefaults
)已经失去了它们的NS
前缀,并且它们的方法已更名以反映Swift 3 API准则。 Foundation还用Swift本地值类型(URL
, IndexPath
, Date
等)替换了一些基本数据类型类(NSURL
、NSIndexPath
、NSDate
等)。方法重命名也适用于您在应用程序中使用的任何其他Cocoa/Cocoa Touch API。
一步一步地解决这些问题,逐行处理,会让人发疯。当将项目移植到Swift 3时,你应该首先选择Edit > Convert > To Current Swift Syntax菜单栏中的选项。这将一次性应用所有更改,包括一个代码行受多个更改影响的情况(因此单独处理它们可能不会达到预期效果)。
*我在“替换”一词中加了引号,因为相应的NS
类仍然存在于某些需要它们的情况下,但使用它们的任何API都会引用新的值类型:例如tableView(_:cellForRowAt:)
现在接受一个IndexPath
而不是NSIndexPath
。