2012-01-21 8 views
0

私は主に英単語のアプリケーションを持っています。オブジェクトAには多くのオブジェクトBがあり、オブジェクトBには多くのオブジェクトCがあります。ここでコードはコアデータの保存を行うのに最適な場所ですか?

iOSアプリケーションでナビゲーションタイプのアプリケーションで表示し、Aがフロントページに表示されている場合は、BにプッシュしてCにプッシュします。

私は自分のA、B、Cオブジェクト(カスタムクラス)の各インスタンスを保存できるようにしたいと思いますが、いつ保存してA、Bに関するデータを表示するテーブルビューそのビューがプッシュされる前に/ Cがポピュレートされる必要があります。

didSelectRowAtIndexPathでそれを読んでください。または、他の何か?貯蓄はどうですか?タップバックや他の場所で行われるべきですか?おそらくクラス自体で?

サム

+0

あなたのオブジェクトは大きすぎず、人々はページをあまりにも早く叩くことはできないと想像しています。そのため、非常に頻繁に保存する必要があります。つまり、すべてのプッシュやポップ、少なくとも編集、値が変わるたびに)。また、アプリがバックグラウンド、画面ロックまたはホームボタンに移動したときに保存することも忘れないでください – Ali

答えて

0

ユーザーが編集を終了するたびに保存する必要があります。

あなたがそれらを必要としたら、あなたはBを手に入れるべきです。すべてのAを表示するテーブルビューの行をタップすると、その特定のAオブジェクトに関連するBが得られます。 2つのオプションがあります:(1)NSFetchRequest/NSFetchedResultsControllerでそれらを取得するか、(2)そのAオブジェクトのBオブジェクトを指すAオブジェクトの多対多関係をトラバースします。

保存方法:たくさんの編集を行った場合、保存に時間がかかることに注意してください。 iOS 5で入れ子になったコンテスト(-parentContext)で使用できるいくつかの高度なテクニックがあり、異なる(非メイン)スレッドに保存することができます。しかし、バックグラウンドにいる間はシステムがプロセスを終了させることができるため、停止前に安全が完了するようにする必要があります。