2011-10-21 10 views
1

私のiPhoneプロジェクトでは、プロファイルと連絡先という2つのオブジェクトを持つデータモデルがあります。それらはお互いに関連しており、1つのプロフィールは多くの連絡先を持っています。私が不明なことは次のとおりです。コアデータに関連オブジェクトを割り当てるにはどうすればよいですか?

コンタクトをデータベースに追加するときにコンタクトにプロファイルを割り当てる正しい方法は何ですか?

私はデータベースに連絡先を追加する方法を知っていますが、プロファイルを追加する正しい方法を知る必要があります。

self.moc = [((AppDelegate *)[[UIApplication sharedApplication] delegate]) managedObjectContext]; 
Contact *contact = [NSEntityDescription insertNewObjectForEntityForName:@"Contact" inManagedObjectContext:self.moc]; 
contact.recordID = recID; 
contact.profile = ???????? 
NSError *err = nil; 
[self.moc save:&err]; 

最初にプロファイルを取得する必要はありますか?別のmanagedObjectContext、または同じものを使用しますか?

私は私がこのようにそれを取得するために使用することができます知っているプロファイルの最初の名前、持っている:私はこのようにそれを行うことができると思いますが、誰かが私のコードブロックを与えることができれば

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
self.moc = [appDelegate managedObjectContext]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(firstName like %@)", appDelegate.currentProfile]; 
Profile *fetchedData = (Profile *)[NSEntityDescription entityForName:@"Profile" inManagedObjectContext:self.moc]; 

をベストプラクティスで、それは素晴らしいでしょう。ありがとう!

答えて

1

最初にプロファイルを取得して、同じMOCを使用できます。次に、Contactのprofileプロパティにそれを割り当てます。

は、プロファイルオブジェクトを返していません。エンティティの説明を返します。

+ (NSEntityDescription *)entityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context

あなたはMOCのフェッチ要求を使用する必要があります。チェックアウト:

http://cocoawithlove.com/2008/03/core-data-one-line-fetch.html

+0

ありがとうございました。私は私のアプリでこのプロファイルに多くアクセスする必要があります。それを一度取得して、それを私のアプリケーションデリゲートのプロパティに割り当てることは理にかなっていますか?今は追跡しておくようなプロファイルのファーストネームを保存していますが、Profileオブジェクトを使用するほうが簡単かもしれません。プロファイルが更新された場合、それへの参照は中断されますか? – user1007895

+0

あなたの関係ですべてのRFI設定が正しく行われていれば問題ありません。私はいつも参照を保持する代わりにそれを取得します。デザインを変更した場合、長期間MOを参照するとコードが壊れやすくなります。 DAOをセットアップして、コードの再利用をカプセル化して容易にするために、すべての管理対象オブジェクトのロードを処理します。 – logancautrell

関連する問題