2011-01-08 32 views
1

私は数日をかけてNSCodingを学び、書くことに成功し、ついにそれを働かせました。しかし、(非常に複雑な)オブジェクトグラフのアーカイブやアーカイブ解除は非常に時間がかかりましたが、これは容認できません。しばらくの間インターネットを検索した後、私はより良い方法はコアデータを使用することだと思います。サブクラスNSManagedObjectを作成する必要がありますか?

あなたは、NSManagedObjectのサブクラスとしてすべてのクラスを書き直すことをお勧めしますか?2)各クラスにNSManagedObjectのインスタンス変数を作成して、クラスの変更によってコアデータ表現も更新されるようにしますか?いずれにしても、既存のクラスに大きな変更が必要になります。クラスが初期化される方法が変更されると、ユニットテストケースの多くを更新する必要があると思います。

お勧めですか?私は間違ったアプローチに再び向かおうとは思わない...

ありがとう!

+0

パフォーマンスに問題があります。問題がどこにあるかを見つけるためにコードをプロファイルする必要があります。あなたはそうしましたか? –

+0

はいコードをプロファイリングするために楽器を使用しました。 –

答えて

2

コアデータを使用する場合は、1)をお勧めします。

2)はあまり意味がありません。たとえば、A* a1A* a2は、同じB* bを参照してください。 ABがサブクラスの場合は、この関係をファイルに簡単に保存してから取り出すことができます。しかしABNSManagedObjectのインスタンスがある場合、どのようにこの2つの関係が1つのBを参照しているかを維持していますか?コアデータAPIによって基本的に提供されるグルーコードをたくさん書く必要があります。

あなたがコアデータを使用する場合、私が与えることができる1つの非常に重要なアドバイスは、Appleのドキュメンテーション非常にを読み取ることで、非常に慎重にスタートからフィニッシュまで、その日からコードを書くために衝動に抵抗します1。コアデータはAPIのかなり大きなセットであり、コードを書く前に構造全体をよく把握することで、後で何日も節約できます。

関連する問題