将 NSUserDefaults 与 Xcode 8 和 iOS 10 一起使用
Using NSUserDefaults with Xcode 8 and iOS 10
NSUserDefaults
在 iOS 10 SDK 中不再显示为 class:
let defaults = NSUserDefaults.standardUserDefaults()
编译失败。这个 class 被删除了吗?
(这是一个规范的问答对,以防止重复问题的泛滥)
NSUserDefaults
已重命名为 UserDefaults
。 standardUserDefaults()
已重命名为 standard()
。
let defaults = UserDefaults.standard
现在可以使用了。
@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 types(URL
、IndexPath
、Date
等)。重命名方法也适用于您在应用中使用的任何其他 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)
NSUserDefaults
在 iOS 10 SDK 中不再显示为 class:
let defaults = NSUserDefaults.standardUserDefaults()
编译失败。这个 class 被删除了吗?
(这是一个规范的问答对,以防止重复问题的泛滥)
NSUserDefaults
已重命名为 UserDefaults
。 standardUserDefaults()
已重命名为 standard()
。
let defaults = UserDefaults.standard
现在可以使用了。
@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 types(URL
、IndexPath
、Date
等)。重命名方法也适用于您在应用中使用的任何其他 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)