JAL*_*JAL 30 ios swift swift3 ios10 xcode8
NSUserDefaults 不再是iOS 10 SDK中的类:
let defaults = NSUserDefaults.standardUserDefaults()
Run Code Online (Sandbox Code Playgroud)
这无法编译.这个班级被删除了吗?
(这是一个规范的问答对,以防止重复的问题泛滥)
JAL*_*JAL 47
NSUserDefaults已重命名为UserDefaults. standardUserDefaults()已重命名为standard().
let defaults = UserDefaults.standard
Run Code Online (Sandbox Code Playgroud)
这现在有效.
Shr*_*wan 20
更准确地说,在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)
Run Code Online (Sandbox Code Playgroud)
ric*_*ter 16
@ JAL的答案是正确的,但也许太具体了.
许多 API在Swift 3中被重命名.大多数Foundation类型(NSUserDefaults其中)都丢失了它们的NS前缀并重命名了它们的方法以反映Swift 3 API准则.基金会还"取代"*一帮其基本数据类型的类(NSURL,NSIndexPath,NSDate等)与雨燕本地值类型(URL,IndexPath,Date等).重命名方法也适用于您在应用中使用的任何其他Cocoa/Cocoa Touch API.
逐行处理这些问题是一种疯狂的可靠方法.将项目移动到Swift 3时,首先要做的是从菜单栏中选择" 编辑">"转换">"转换为当前Swift语法 ".这将同时应用所有更改,包括一行代码受多个更改影响的情况(因此单独解决它们可能无法让您达到您认为的目的).
*我在引号中加上"替换",因为相应的NS类仍然适用于您可能需要它们的情况,但任何使用它们的API都会引用新的值类型:例如,tableView(_:cellForRowAt:)现在需要一个IndexPath,而不是一个NSIndexPath.
| 归档时间: |
|
| 查看次数: |
22627 次 |
| 最近记录: |