I am using plist to store and retrieve my favorite list. Everything works fine till I restart my Iphone. The favorite list disappears. My question is can I use plist to persist data? Please can someone assist if possible ? Thanks
4 に答える
plist をどのように保存してリロードしますか? 一般的には問題にはなりません。バックグラウンドに移行するとき (または何かが変更されたとき) に plist をアプリのドキュメント ディレクトリに保存し、起動時にリロードするだけです。
次のメソッドを使用するだけです (NSArray または NSDictionary の場合)。
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
これらはユーザーのデフォルトのみを対象としており、ユーザーデータを対象としていないため、他の人が提案したように使用 しないでください。NSUserDefaults
ドキュメントのディレクトリに保存すると、データが正しくバックアップされ、より大きなデータ セットでも適切に機能することが保証されます。
NSUserDefaults
設定ビューに表示できる可能性のあるものを対象としています。
私はiOS開発の経験はありませんが、NSUserDefaultsを使用することをお勧めします。
私はMacOSXアプリケーションでそれを使用しています、そしてそれは仕事をします。
ブルーノが提案するように、ユーザー設定データを NSUserDefault に保存しない理由。
次のようなことができます。
保存する:
self.userDefaults = [NSUserDefaults standardUserDefaults];
[self.userDefaults setObject:myObject forKey:@"myKey"];
[self synchronize];
ロードするには:
self.userDefaults = [NSUserDefaults standardUserDefaults];
NSObject *myObject = [self.userDefaults objectForKey:@"myKey"];
はい、次のコードを使用して、p-list を使用してデータを永続化し、p-list をドキュメント ディレクトリにコピーできます。
NSError *error;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"your_plist_name.plist"];
これはあなたを助けるかもしれません...