web-dev-qa-db-ja.com

アプリを閉じた後に変数を保存する(Swift)

アプリを閉じた後でも保存できるように変数をXcodeに保存しようとしていますが、アクセスするときにいくつかの異なるクラスとファイルから変数を保存し、アクセスするときに変数の値を変更します。したがって、同様のスレッドは完全には適用されません。格納される値は文字列であり、これまでのコードは次のとおりです。

var defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(Token, forKey: "") as! String

これは正しい形式だと思いますが、呼び出して変更する方法がわかりません。試行すると、予期された宣言を示すエラーメッセージが表示されるためです。

とにかくどんな助けでも大歓迎です。

9
lucas rodriguez

まず、変数を格納するための一意のキーを指定する必要があります(例ではMyKey)。

AppDelegate > applicationDidFinishLaunchingキーをデフォルト値で登録します。
利点は、オプションではない変数を使用でき、デフォルト値が定義されていることです。

let defaults = UserDefaults.standard
let defaultValue = ["MyKey" : ""]
defaults.register(defaults: defaultValue)

これで、どこからでもキーの値を読み取ることができます

let defaults = UserDefaults.standard
let token = defaults.string(forKey: "MyKey")

そしてそれを保存します

let defaults = UserDefaults.standard
defaults.set(token, forKey: "MyKey")
15
vadian

Swift

(vadianの答えに感謝します)

AppDelegate > applicationDidFinishLaunching

    let defaults = UserDefaults.standard
    let defaultValue = ["myKey" : ""]
    defaults.register(defaults: defaultValue)

キーを保存するには:

let defaults = UserDefaults.standard
defaults.set("someVariableOrString", forKey: "myKey")
defaults.synchronize()

キーを読み取るには:

    let defaults = UserDefaults.standard
    let token = defaults.string(forKey: "myKey")
5
Test

tokenという文字列変数があるとします。

デバイスに保存されている値を保存/更新するには:

NSUserDefaults.standardUserDefaults().setObject(token, forKey: "mytoken")
NSUserDefaults.standardUserDefaults().synchronize()

上記のコードでは、キーに値( "mytoken")を指定しました。これは、後で見つけることができるようにするためです。

デバイスから保存された値を読み取るには:

let token = NSUserDefaults.standardUserDefaults().objectForKey("mytoken") as? String

メソッドobjectForKeyはオプションのAnyObjectを返すので、必ずオプションのString(オプションはnilまたは値を持つことを意味します)にキャストします。

4
Mattias