アプリケーション実行時にユーザーによって変更されるグローバル設定変数(SettingsVariable.settingOne)があります。私はユーザーを永久に変更させたいと思っていますが、現時点では、アプリが読み込まれるたびに元の値に戻ります。ユーザーは値をfalseに変更しますが、アプリが再実行されると、変数の値が元の値に戻ります。値は、次のコードが(SWIFT 2)と呼ばれている変更されSwift:ユーザーのデフォルト値がアプリケーションのオープン時と閉じ時に保存/ロードされない
:
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "settingOne")
アプリが閉じている:
func applicationWillTerminate(application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
NSUserDefaults.standardUserDefaults().setBool(SettingsVariables.settingOne, forKey: "settingOne")
}
次いでアプリが再び開かれると:
をfunc application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
NSUserDefaults.standardUserDefaults().boolForKey("settingOne")
return true
}
しかし、settingOneの値は、元々設定されていたデフォルト値の 'true'に戻りますアプリケーション。
SettingsVariables.settingOneは、構造体の中に含まれています
import UIKit
struct SettingsVariables {
static var settingOne = true
}
返信いただきありがとうございます。私はそれをコードに追加しましたが、変更された値をロードすることはまだありません。 –
1)通常は 'synchronize'を呼び出す必要はありません。 2) 'applicationWillTerminate'が必ずしも呼び出されるわけではありません。 – rmaddy
私はapplicationDidEnterBackgroundメソッドのコードも持っていますが、動作しません。 –