AppDelegate で定義されている次の 2 つの手順があります。saveSettings と loadSettings。AppDidFinishLaunching メソッドで loadSettings プロシージャを呼び出しています。保存ボタンをクリックすると、設定ビューで saveSettings プロシージャを呼び出しています。
どちらのメソッドも、適切なタイミングで適切な回数 (1 回) 呼び出され、正しいデータを使用しているように見えます。私の設定オブジェクトは正しいデータを取得しますが、データが実際に保存されていないようです。ロード コードを実行すると、結果の変数が空 (nil ではない) に戻ります。
同じ読み込みコードを別のビューに配置しようとしましたが、正常に動作しましたが、何らかの理由で appDelegate で結果が得られません。
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview:navigationController.view];
[window makeKeyAndVisible];
[self loadSettings];
[self setDefaults];
}
-(void)loadSettings{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
settings.masterLocation = [prefs objectForKey:@"masterLocation"];
settings.masterPort = [prefs objectForKey:@"masterPort"];
settings.userName = [prefs objectForKey:@"userName"];
settings.passWord = [prefs objectForKey:@"passWord"];
settings.autoLogin=[prefs objectForKey:@"autoLogin"];
if (settings.autoLogin == nil)
settings.autoLogin=@"N";
}
-(void)saveSettings:(SharedData *)d{
settings=d;
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:settings.masterLocation forKey:@"masterLocation"];
[prefs setObject:settings.masterPort forKey:@"masterPort"];
[prefs setObject:settings.userName forKey:@"userName"];
[prefs setObject:settings.passWord forKey:@"passWord"];
[prefs setObject:settings.autoLogin forKey:@"autoLogin"];
}