2012-04-07 22 views
1

私のアプリでは、CoreDataを使用しているImは2つのエンティティを持っています。 VenueInfoおよびContactInfo。CoreData 1対1の関係

アプリでは会場を追加でき、各会場にはContactInfoがあります。そこで私のモデルでは1対1の関係をセットアップしました。

は、だから、私は単純に次の操作を行うことができ、想像:あなたが会場に所属する連絡先オブジェクトのメール属性を設定したい

[venue.contact setValue:textField.text forKey:email];

ので好きです。しかし、これは、任意のアイデアは動作しません?

連絡先オブジェクトがまだ存在しないため可能ですか?あなたが助けてくれることを願っています。

+0

あなたの.xcodeModelのスクリーンショットを投稿してください。 –

+0

私は自分の答えを更新しました。どうぞご覧ください.. –

答えて

4

あなたが書いた行はそのようには動作しません。私はcontactがxCodeModelのVenueエンティティにある関係名であると仮定します。

[venue.contact setValue:textField.text forKey:email]; // can't write this way.. 

あなたContactInfoエンティティは二つのフィールドがあるとしますphoneemailあなたが行くことができるので、この方法を。 およびVenueInfoエンティティには、2つのフィールド、nameがあります。私たちはここにいた何

VenueInfo *venueInfo=[NSEntityDescription insertNewObjectForEntityForName:@"VenueInfo" inManagedObjectContext:self.managedObjectContext]; 
    vanueInfo.name=txtVenueName.text;   // venue name entry 


    ContactInfo *contactInfo=[NSEntityDescription insertNewObjectForEntityForName:@"ContactInfo" inManagedObjectContext:self.managedObjectContext]; 

    contactInfo.phone=txtPhone.text; 
    contactInfo.email=txtEmail.text; 
    contactInfo.venue=venueInfo; // I assume venue is the relationship name you give in ContactInfo entity towards Venue entity. 

我々は唯一ContactInfoエンティティに電話やメールの詳細を保存し、その後、私たちはただ、現在選択されてVenueInfoたちはVenueInfoためContactInfoエンティティで宣言された関係にアクセスすると、それを関連しています。

これはおそらく非常に混乱するので、コアデータ関係に関するいくつかの基礎を理解するためのアイデアを示すチュートリアルに従うことをお勧めします。 core data relationships tutorials

+0

変更contactInfo.venue = selectedVenue; to contactInfo.venue = venueInfo; –

+0

これは意味がありますが、確かにこれは会場の連絡先情報を初めて提供するときにのみ有効です。次回にこれを編集して新しい連絡先オブジェクトを作成すると、確実にvenue.contactのようなものを使って既存の情報にアクセスする必要がありますか? –

+0

申し訳ありませんが、あなたを取得していませんか?コアデータの参照コードまたはサンプルコードを参照しましたか? –