在Xcode 8和iOS 10中使用NSUserDefaults

NSUserDefaults不再是iOS 10 SDK中的一个类:

 let defaults = NSUserDefaults.standardUserDefaults() 

这不能编译。 这个class级被删除了吗?

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

NSUserDefaults已被重命名为UserDefaultsstandardUserDefaults()已经被重命名为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) 

@日航的答案是正确的,但也许太具体。

许多 API在Swift 3中被重命名。大多数基础types(其中的NSUserDefaults )都丢失了NS前缀,并重命名了它们的方法以反映Swift 3 API指南 。 Foundation还用Swift原生值types ( URLIndexPathDate等)“replace”一些基本的数据types类( NSURLNSIndexPathNSDate等)。 重命名方法也适用于您在应用程序中使用的任何其他Cocoa / Cocoa Touch API。

逐一处理这些问题,是一个疯狂的肯定的方式。 将项目移动到Swift 3时要做的第一件事是从菜单栏中selectEdit> Convert> To Current Swift Syntax 。 这将同时应用所有更改,包括一行代码受多个更改影响的情况(因此,单独解决这些更改可能不会使您获得您想要的位置)。

*我将“replace”放在引号中,因为相应的NS类仍然存在于您可能需要它们的情况下,但是使用它们的API引用了新的值types:例如tableView(_:cellForRowAt:)现在需要IndexPath ,而不是一个NSIndexPath