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 の多くは Swift 3 で名前が変更されました。ほとんどの Foundation 型 (NSUserDefaults
その中) は、NS
プレフィックスが失われ、 Swift 3 API ガイドラインを反映するためにメソッドの名前が変更されました。Foundation はまた、一連の基本データ型クラス ( 、、など) を Swift ネイティブの値型( 、、など)に「置き換え」*ます。メソッドの名前変更は、アプリで使用する他の Cocoa / Cocoa Touch API にも適用されます。NSURL
NSIndexPath
NSDate
URL
IndexPath
Date
これらの問題を 1 行 1 行ずつ処理することは、確実に狂気への道です。プロジェクトを Swift 3 に移行するときに最初に行うことは、メニュー バーから[編集] > [変換] > [現在の Swift 構文に変換]を選択することです。これにより、コードの 1 行が複数の変更によって影響を受ける場合を含め、すべての変更が一度に適用されます (したがって、それらに個別に対処しても、意図したとおりにならない可能性があります)。
*「置換」を引用符で囲んだのは、対応するNS
クラスが必要な場合に備えてまだ存在するためですが、それらを使用する API は代わりに新しい値の型を参照します。たとえばtableView(_:cellForRowAt:)
、 .IndexPath
ではなくNSIndexPath
.