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)
@JAL 的回答是正确的,但可能过于具体。
许多API 在 Swift 3 中被重命名。大多数 Foundation 类型(NSUserDefaults
其中)都失去了NS
前缀,并且重命名了它们的方法以反映Swift 3 API 指南。Foundation 还用 Swift 原生值类型(、、、等) “替换”*了一堆基本数据类型类(NSURL
、、、NSIndexPath
等)。方法重命名也适用于您在应用程序中使用的任何其他 Cocoa / Cocoa Touch API。NSDate
URL
IndexPath
Date
一条一条、一条一条地处理这些问题,肯定会发疯。将项目移动到 Swift 3 时,您要做的第一件事是从菜单栏中选择Edit > Convert > To Current Swift Syntax 。这将一次应用所有更改,包括一行代码受到多个更改影响的情况(因此单独解决它们可能无法让您到达您认为的目标)。
*我将“替换”放在引号中,因为在您可能需要它们的情况下,相应的NS
类仍然存在,但任何使用它们的 API 都引用新的值类型:例如,tableView(_:cellForRowAt:)
现在需要一个IndexPath
,而不是一个NSIndexPath
。