0

私のiOSプログラム全体。プログラムを機能させるために、すべてが連携して機能する複数の配列を作成します。ここで、iPhone の電源がオフになっている場合でも配列を保存する方法が必要です。したがって、これらの配列は、私だけが触れることができるファイルのように保存する必要があります。


ユーザーデフォルトを使用したいのですが、それが必要かどうかわかりません。次のような質問があります。

  1. ユーザーデフォルトでデータが保持される期間は?
  2. いつデータを失う可能性がありますか?

配列を User Defaults に格納できた場合、配列を NSDictionaries に格納するにはどうすればよいですか? そうすれば、関連する配列をまとめて保持し、各配列に特定のキーを与えることができます。

4

4 に答える 4

3

配列を NSDefaults のように NSData として保存します

[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:urArray1] forKey:@"Array1"];

[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:urArray2] forKey:@"Array2"];

そしてそれを次のように読んでください

 NSData *dataRepresentingSavedArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"Array1"];
 if (dataRepresentingSavedArray != nil)
      NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
于 2012-05-10T11:25:47.757 に答える
0

あなたが望むのは、アレイをディスクに保存してから(実際に必要になったときに)それらを取り戻すことだと思います。内部のオブジェクトがプロトコルにNSMutableArrays準拠しているかどうかを確認することから始めることができます。NSCodingその後、それらをディスクに書き込んで、必要なときにロードするだけです。そのために、NSKeyedArchiverクラスを使用できます。


@The Saadが指摘したように、そのコードを使用して配列を保存できます。私はそれをお勧めしませんが。@roronoa zorroの回答も確認できます。

于 2012-05-10T11:28:19.893 に答える
0

NSuSerDefaults は永続的なデータを iPhone に保存する方法であり、アプリケーションが iPhone に残っている限り、データの損失や永続性について心配する必要はありません。

はい、NSDictionary オブジェクトを NSUserDefaults に保存できますが、小さいデータには使用することをお勧めします。より大きなデータの場合は、sqlite またはその他の DB を使用できます。

これがNSUserDefaultのチュートリアルです

于 2012-05-10T11:29:40.280 に答える
0

NSUserDefaults基本的には、プロパティ リストのシリアル化の単なるラッパーです。

NSUserDefaults は、Mac OS X の設定システムへのプログラム インターフェイスを提供します。設定は実際にはディスクに保存され、ユーザーの Library/Preferences/ ディレクトリに書き込まれ、ファイル名はバンドル識別子に plist 拡張子を付けたものになります。

MikeBeam の記事はこちら

于 2012-05-10T11:37:14.863 に答える