NSUserDefaults
はiOS 10 SDKのクラスではなくなりました:
let defaults = NSUserDefaults.standardUserDefaults()
これはコンパイルに失敗します。このクラスは削除されましたか?
(これは、重複した質問の洪水を防ぐための標準的なQ&Aペアです)
NSUserDefaults
はUserDefaults
に名前が変更されました。 standardUserDefaults()
は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)
@JALの答えは正しいが、おそらく具体的すぎる。
APIのLotsは、Swift 3.で名前が変更されました。ほとんどのFoundationタイプ(その中のNSUserDefaults
))は両方ともNS
プレフィックスを失い、メソッドがありました- 改名 反映 Swift 3 APIガイドライン 。Foundationは、基本的なデータ型クラス(NSURL
、NSIndexPath
、NSDate
など)の束をSwift-nativeと「置き換え」* 値の種類 (URL
、IndexPath
、Date
など)。メソッドの名前変更は、アプリで使用する他のCocoa/Cocoa Touch APIにも適用されます。
これらの問題を1行ずつ1つずつ対処することは、確実に狂気に陥る方法です。 プロジェクトをSwift 3)に移動するときに最初に行うことは、編集>変換>現在にSwift Syntax)メニューバーから。これにより、1行のコードが複数の変更の影響を受けます(したがって、それらに個別に対処することで、目的の場所に移動できない場合があります)。
*対応するNS
クラスは必要な場合に対応するため、「置換」を引用符で囲みますが、それらを使用するAPIは代わりに新しい値の型を参照します。 tableView(_:cellForRowAt:)
は、IndexPath
ではなく、NSIndexPath
を取ります。