0

私は小さな iPhone ロギング アプリに取り組んでおり、位置データのデータベースをユーザーのログ データとは別に保持したいと考えています。

2つを分離する理由はいくつかあります。

1) アプリの更新で定期的な位置データの更新をプッシュする可能性が高く、コックアップを作成してユーザー データに影響を与えるリスクを冒したくありません。

2) 場所データはおそらくユーザー データを小さくするため、ユーザー ファイルの同期とバックアップは、この 2 つが分離されている場合により迅速に行われます。

したがって、2 つの永続ストアを持つつもりであるとすると、パフォーマンスとコーディングの複雑さの点で、それぞれが独自の永続ストアを持つ 2 つの別個のコンテキストよりも、2 つの永続ストアを持つ 1 つのコンテキストを持つことに利点または欠点がありますか?

これについての考えは大歓迎です-私はこのことに関しては少しn00bです-前もって感謝します

サイモン。

4

2 に答える 2

1

私は自分のアプリに同様のことを実装しました。特定のデータセットに更新をプッシュしたいので、2つのデータベースからデータをロードします。

私が行った方法は、1つのオブジェクトモデル、1つの管理対象オブジェクトコンテキスト、2つの永続ストアを使用しており、それぞれが異なるsqliteファイルをロードしています。これを行うために、データモデルファイルに2つの構成を作成し、適切なエンティティを各構成にドラッグしました。次に、永続ストアを作成するときは、次のようにします。

[__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"Configuration1" URL:store1URL options:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil] error:&error];
[__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"Configuration2" URL:store2URL options:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil] error:&error];

これまでに私が見つけた唯一の問題は、店舗間の関係を持てないことです。この回答は、フェッチされたプロパティを使用して関係を複製する方法を示しています。

お役に立てれば。

于 2013-01-25T14:20:14.897 に答える
0

実際、同じアプリケーションを使用して、2 つの異なるモデルと 2 つの異なる永続ストアを持つ 2 つの異なる managedObjectContext を使用することができました。

それらを Application Delegate にロードするだけで、アプリ全体で使用できるようになります。

私がしたことは、最初のコンテキストのまったく同じ初期化デフォルト コードをコピーして貼り付け、新しいコンテキスト、ストア、およびモデルの名前を変更したことです。

なぜ私はこれをしたのですか?私が渡されたアプリの完全に別のモジュールがあり、私はそれをあまり制御できませんでした。アプリのロジックを台無しにして、コードリポジトリの別のフォークに保持できるようにしたくありませんでした。メインブランチの差別化されたコミットとチェリーピッキングの機能強化を行います。

于 2013-11-21T20:55:21.350 に答える