将 NSUserDefaults 与 Xcode 8 和 iOS 10 一起使用

Using NSUserDefaults with Xcode 8 and iOS 10

NSUserDefaults 在 iOS 10 SDK 中不再显示为 class:

let defaults = NSUserDefaults.standardUserDefaults()

编译失败。这个 class 被删除了吗?

(这是一个规范的问答对,以防止重复问题的泛滥)

NSUserDefaults 已重命名为 UserDefaultsstandardUserDefaults() 已重命名为 standard()

let defaults = UserDefaults.standard

现在可以使用了。

Pre-release documentation link.

@JAL 的回答是正确的,但可能太具体了。

API 中的 已在 Swift 中重命名 3. 大多数基础类型(其中 NSUserDefaults)都失去了它们的 NS 前缀和它们的方法 renamed to reflect Swift 3 API Guidelines. Foundation also "replaces"* a bunch of its basic data type classes (NSURL, NSIndexPath, NSDate, etc) with Swift-native value typesURLIndexPathDate 等)。重命名方法也适用于您在应用中使用的任何其他 Cocoa / Cocoa Touch API。

一行一行地处理这些问题肯定会发疯。 将项目移动到 Swift 3 时,您要做的第一件事应该是选择 Edit > Convert > To Current Swift Syntax 从菜单栏。这将立即应用所有更改,包括一行代码受到多项更改影响的情况(因此单独解决它们可能无法让您到达您认为要去的地方)。

*我把 "replaces" 放在引号中是因为相应的 NS 类 在您可能需要它们的情况下仍然存在,但是任何 API 使用它们的是指代新的值类型:例如tableView(_:cellForRowAt:) 现在需要 IndexPath,而不是 NSIndexPath

更准确地说,在 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)