2011-10-25 14 views
2

コアデータを使用して、「リレーショナル」形式で送信されたサーバーのデータを格納しています。リレーショナルデータ(iOS)からコアデータリレーションシップを素早く作成する

例えば、私は、サーバーから取得したデータは、このようなもの(実際の形式は多少異なるが、十分に類似している)

Users: [{PK: 1, Name: 'A B'}, {PK: 2, Name: 'C D'}, {PK: 3, Name: 'E F'}] 
Posts: [{PK: 1, UserPK: 1, Content: '...'}, {PK: 2, UserPK: 3, Content: '...'}] 

に見える私のコアデータモデルは、ユーザーと記事の間に設定関係を持っており、それは必要なように動作します。しかし、私の問題は、サーバーから新しいデータセットを受け取ったときに、できるだけ早くこれらのオブジェクトとその関係を作成することです(ばかげた量のRAMを使用せずに)。

問題は、投稿をユーザーに関連付けることです。それを行う "通常の"方法は基本的にはpost.user = user;と書いていますが、これは私がuserをディスクからロードする必要があります。

私の現在の計画は、すべてのユーザーを読み込み、フォルトし、PKを実際のオブジェクトにマップするNSDictionaryを作成することです。そうすれば、投稿に関連付ける必要があるユーザーをすばやく見つけることができます。しかし、このソリューションは、本質的にはほんの些細な操作であるはずのものにとっては少し複雑なようです。

答えて

2

ソリューションが健全であることができます。フォールト状態にしておく限り、メモリを大量に使うべきではありません。フォールトされたMOはの小さなです。

0

私は非常にのような状況にあり、数百のデータオブジェクトとリレーションシップの反復インポートには余りにも遅いため、データをコアデータにインポートできませんでした。それは、私が書いたパーサーは、そのフォーマットでは、リアルタイムで(テーブルビューなどをスクロールしながら)データを読み込むのに十分速いことが分かったので、基本的には生データをディスクに保存しました。

パーサーを拡張する必要があったため、管理対象オブジェクトに似たデータオブジェクトが出力され、KVCを使用して生データをクエリできます。

私はユーザーの編集を保存するためにCore Dataを使用し続け、両方のデータソースを一緒に持ってくるデータマネージャークラスを導入しました。

はあなたが求めてかなり何、私は推測していないが、多分それは... NSDictionaryでメモリ内のユーザーを維持するの

関連する問題