0

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

4 に答える 4

2

plist をどのように保存してリロードしますか? 一般的には問題にはなりません。バックグラウンドに移行するとき (または何かが変更されたとき) に plist をアプリのドキュメント ディレクトリに保存し、起動時にリロードするだけです。

次のメソッドを使用するだけです (NSArray または NSDictionary の場合)。

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag

これらはユーザーのデフォルトのみを対象としており、ユーザーデータを対象としていないため、他の人が提案したように使用 しないでください。NSUserDefaultsドキュメントのディレクトリに保存すると、データが正しくバックアップされ、より大きなデータ セットでも適切に機能することが保証されます。

NSUserDefaults設定ビューに表示できる可能性のあるものを対象としています。

于 2012-06-27T11:11:15.540 に答える
0

私はiOS開発の経験はありませんが、NSUserDefaultsを使用することをお勧めします。
私はMacOSXアプリケーションでそれを使用しています、そしてそれは仕事をします。

于 2012-06-27T10:52:07.120 に答える
0

ブルーノが提案するように、ユーザー設定データを NSUserDefault に保存しない理由。

次のようなことができます。

保存する:

self.userDefaults = [NSUserDefaults standardUserDefaults];
[self.userDefaults setObject:myObject forKey:@"myKey"];
[self synchronize];

ロードするには:

self.userDefaults = [NSUserDefaults standardUserDefaults]; 
NSObject *myObject = [self.userDefaults objectForKey:@"myKey"];
于 2012-06-27T10:58:44.967 に答える
0

はい、次のコードを使用して、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"];

これはあなたを助けるかもしれません...

于 2012-06-27T11:45:58.683 に答える