NSUserDefaults
NSUserDefaults的使用不再似乎是一类在iOS的10 SDK:在Xcode 8和iOS 10
let defaults = NSUserDefaults.standardUserDefaults()
这无法编译。这个班级被删除了吗?
(这是一个典型Q &一对,以防止重复的问题洪水)
NSUserDefaults
NSUserDefaults的使用不再似乎是一类在iOS的10 SDK:在Xcode 8和iOS 10
let defaults = NSUserDefaults.standardUserDefaults()
这无法编译。这个班级被删除了吗?
(这是一个典型Q &一对,以防止重复的问题洪水)
NSUserDefaults
已更名为UserDefaults
。 standardUserDefaults()
已更名为standard()
。
let defaults = UserDefaults.standard
现在可以工作。
@日航的答案是正确的,但也许太具体。
很多API的斯威夫特得到了更名3.最基础的类型(其中NSUserDefaults
)双双失去了NS
前缀和有自己的方法renamed反映Swift 3 API Guidelines。基金会还 “取代” *一帮其基本数据类型类(NSURL
,NSIndexPath
,NSDate
等)与雨燕本地value types(URL
,IndexPath
,Date
等)。重命名方法也适用于您在应用中使用的任何其他Cocoa/Cocoa Touch API。
一行一行处理这些问题是一种疯狂的肯定方式。 将项目移动到Swift 3时要做的第一件事情应该是从菜单栏中选择编辑>转换>转换为当前快捷语法。这将同时应用所有更改,包括一行代码受多个更改影响的情况(因此单独解决这些更改可能无法将您带到您想要的地方)。
*我将“替换”放在引号中,因为相应的NS
类仍然存在于您可能需要它们的情况下,但是任何使用它们的API都会引用新的值类型。 tableView(_:cellForRowAt:)
现在需要IndexPath
,而不是NSIndexPath
。
感谢rickster。有一个关于iOS 10中的类重命名的元问题[here](http://meta.stackoverflow.com/q/326078/2415822)。 – JAL
更精确,斯威夫特-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)
不需要在'UserDefaults'之前写'Foundation.' –
看起来像我要去有一些有趣的重写过去的一些代码。 –
@JAL - 一旦我们使这些NSUserDefault更改符合Swift 3/ios10/Xcode 8,我们所有NSUserDefaults的当前值是否会持续? – Joe
@Joe是的,所有的数据将会持续存在。这些只是类和函数名称的变化。 – JAL