0

名前、年齢などの人のデータを保存する非常に単純なアプリを作成しています。人の誕生日など、データを変更するオプションをユーザーに提供します。データを保存する最適な方法がわかりません。

長い間検索してきましたが、探している簡単な答えが見つかりません。可変配列のデータを変更すると、そのデータは永久に変更されますか? つまり、既存のコードを上書きしてデータを変更し、アプリを閉じて再度リロードしたときにも存在するようにしますか?

これまでのところ、私はそれを行うことができません。私はMySqlとSqlサーバーの経験があるので、可能であればその方向に進む傾向がありますが、可能であれば可変配列または可変辞書を使用したいと思っています. これは初歩的な質問かもしれませんが、どこにも答えが見つかりません。

4

5 に答える 5

1

コアデータを見てください。これは、iOS でこの種のデータ ストレージ要件を管理する最も簡単な方法です。

私の本を見てください。良いレビューがあり、あなたがやろうとしていることにぴったりです: http://www.amazon.com/Pro-Core-Data-iOS-Professionals/dp/1430233559

簡単に始めたい場合は、オンライン チュートリアルもたくさんあります。たとえば、レイはいくつかの良いことを書いています:

http://www.raywenderlich.com/934/core-data-on-ios-5-tutorial-getting-started

于 2012-05-05T20:39:22.280 に答える
1

あなたにはいくつかの誤解があります。

作成したオブジェクトはメモリ内にあります。それらについて永続的なものは何もありません。何らかの方法でそれらを保存する必要があります。そうしないと、アプリケーションを終了して戻ってきたときに消えてしまいます。

配列を保存する場合、いくつかのオプションがあります。

配列に NSString、NSData、NSDate、NSNumber、NSArray、または NSDictionary 型のオブジェクトしか含まれていない場合は、システム クラス NSUserDefaults を使用して配列を保存できます。

NSArray には writeToFile:atomically: メソッドもあり、データの配列をファイルに保存します。

ただし、配列に上記の型以外のオブジェクトが含まれている場合、これらのアプローチ (NSUserDefaults または writeToFile:atomically) はどちらも機能しません。

もう 1 つのオプションは、NSKeyedArchiver を使用して配列の内容をデータに変換し、そのデータをファイルに書き込むことです。そのアプローチが機能するためには、配列内のすべてのオブジェクト、およびそれらのオブジェクト内のすべてのオブジェクトが NSCoding プロトコルをサポートする必要があります。

他の人が指摘しているように、Core Data または mySQL を使用してデータを保存することもできますが、配列を保存するだけではやり過ぎのようです。

于 2012-05-06T01:54:05.990 に答える
0

CoreData は、Cocoa および Cocoa-Touch でデータが通常保持される方法です。また、元に戻すサポートなどの素晴らしい追加機能も提供します。しかし、それには大きな学習曲線があります。

あなたがやっていることは非常に単純な場合は、 を見てくださいNSUserDefaults。もう少し柔軟性が必要な場合は、いつでもとを使用できます (ファイル パスNSArrayの代わりに URL を取る両方のメソッドのバージョンもあります)。-writeToFile:atomically:-initWithContentsOfFile:

それよりも複雑なものは何でも、CoreData を学習するのに苦労するだけの価値があるでしょう。

于 2012-05-06T02:51:45.480 に答える
0

ミュータブルとは、いつでもデータを変更できることを意味するため、永続的ではありません。

于 2012-05-05T20:26:33.800 に答える
0

はい、あなたが求めていることに関しては永続的です。配列は可変であるため、いつでもデータを元に戻すことができますが、初期データはこの新しいデータによって上書きされます。

編集:いいえ、アプリを閉じた後は情報は残りません。プログラムで保存する必要があります。Core Dataを使用します。

于 2012-05-05T20:33:52.827 に答える