0

私の場合、コアデータがどのように機能する必要があるかを十分に理解していないため、コアデータモデル構造を計画する決定に行き詰まっているようです。これで、エンティティCustomerCity. それぞれにいくつかのプロパティがあり、現在それらの間に関係はありません。どちらも他のオブジェクトと多くの関係を持っているため、完全に独立した種類のオブジェクトです。私のCustomerエンティティには、cityプロパティがあります(顧客がいる都市はどこですか)。その値は、エンティティのプロパティname(都市の名前) の値と一致する必要があります。Cityスキームは次のようになります。ここに画像の説明を入力

エイリアスとなるオブジェクトCityは、Web から JSON ファイルを解析することによって形成され、この部分が正常に機能するようになりました。NSManagedObject サブクラス (エンティティから生成) にメソッドを追加して、エンティティCustomerから name プロパティの値を取得しCity、city プロパティに格納します。

- (City *)city 
{
     return (City *)[[PTDataFetchHelper sharedInstance] entityForName:@"City" withServerID:self.city_server_id inContext:[self managedObjectContext]]; 
}

これは関係なしで機能しますが、私の UITableView (ソースのように NSFetchedResultsController を使用しています) は、この種のフェッチで恐ろしく遅く動作し始めます。また、このスキームを使用すると、オブジェクトCustomerCityオブジェクトの両方による検索を実装できないことも理解しています.1種類のエンティティからしかフェッチできません。この 2 つの親エンティティを作成できることがわかりましたが、論理的および構造的に独立しています。この 2 つの問題を解決するための最適なアーキテクチャの方法は何ですか? コメントをお待ちしております。

4

1 に答える 1

1

いくつかの観察:

  • モデル内で と のCity間の関係を設定しないように意図的に努力しました。Customerあなたの要件について私が理解していることに基づいて、その理由がわかりません。「名前のプロパティ値を取得してプロパティに格納するためのサブクラスにメソッドを追加した」NSManagedObjectCustomerCitycityというコメントを作成します。しかし、それはあなたがしているようには見えません。呼び出されるたびにコンテキストから都市名を動的に取得するcityon プロパティの getter メソッドを作成しました。Customerこれが、報告された速度低下の原因である可能性があります。

  • リレーションシップを横断するを作成できます。NSFetchRequest調べてください:

  • CustomerCity実際には論理的に独立しているわけではありません。これは、現在構造化されてcustomerInstance.cityいる名前である必要があるためです。cityInstance.name

于 2013-07-09T11:56:43.610 に答える