0

私はエンティティアイテムと、Itemとの多対多関係にあるエンティティタイプ(属性 "名前")を持っています。 (すなわち、項目:ブラウンテーブル、名前が「コーヒーテーブル」のタイプに関連する)。私はプログラムで例えば、使用して、細かい新しいアイテムを追加しましたコアデータプログラムによる多対多リレーションシップの追加

[newItem setValue:([nameTextField stringValue]) forKey:@"Name"]; 
[newItem setValue:(costNumber) forKey:@"Cost"]; 
[newItem setValue:(priceNumber) forKey:@"Price"]; 

私は時間のために検索してきたが、新しいアイテムに関係を追加する私のために働く何かを見つけることができません。私はNSPopUpButtonを使ってアイテムのタイプを選択し、selectedItem、selectedTag、およびselectedCellのようなメソッドを試してみました。私は次のように充填され、私の「typeArray」から値を取得しようとしている:

NSFetchRequest *fetchRequest2 = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity2 = [NSEntityDescription entityForName:@"Type" 
              inManagedObjectContext:managedObjectContext]; 
[fetchRequest2 setEntity:entity2]; 
NSError *error = nil; 
typeArray = [managedObjectContext executeFetchRequest:fetchRequest2 error:&error]; 
if (typeArray == nil) { 
    NSLog(@"ERROR"); 
} 
[fetchRequest2 release]; 

私は次のように右のラインに沿っているかどうかわからないんだけど:

NSManagedObject *selectedType = [typeArray objectAtIndex:[typePopUpButton selectedTag]]; 

しかし、私selectedTypeに "addObject"のようなものを追加するオプションはありません。

ご協力いただきありがとうございます。

+0

私はhttp://lethain.com/one-to-many-relationships-in-coredata/を使用しようとしていますが、自分の状況にポップアップボタンを使用することはできません。 – Rail24

+0

[newItem mutableSetValueForKey:@ "Type"]を試したことがある場合は、あなたの質問には言及していませんでした - それから得るNSMutableSetはaddObject:メッセージを受け取るべきです。 –

+0

私は 'NSMutableSet * mutableSet = [newItem mutableSetValueForKey:@" Type "];を試しました。 [NSCFSetエンティティ]:インスタンスに送信された認識できないセレクタ0x102819c90 ' – Rail24

答えて

0

これは私が使用して終了するものである:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Type" 
              inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 
NSError *error = nil; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Name like %@", [typePopUpButton titleOfSelectedItem]]; 
[fetchRequest setPredicate:predicate]; 
NSArray *typeSet = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
if (typeSet == nil) { 
    NSLog(@"ERROR"); 
} 
[fetchRequest release]; 


NSManagedObject *typeObject = [typeSet objectAtIndex:0]; 
[typeObject addItemsObject:newItem]; 

基本的に、オブジェクトは関係が二つのアイテムの間で行うことができるようにフェッチする必要があり、述語がtypePopUpButton年代titleOfSelectedItemに基づいています方法。

メソッド[objectAtIndex:0]でオブジェクトを1つだけ選択してください。

警告は表示されますが、NSManagedObject may not respond to 'addItemsObject'です。

しかし、これは私にとってはうまくいきます。

関連する問題