0

エンティティItemと、Itemと多対数の関係にあるエンティティType(属性「Name」を持つ)があります。(つまり、アイテム:茶色のテーブル、「コーヒーテーブル」という名前のタイプに関連します)。

たとえば、次のコマンドを使用して、プログラムで新しいアイテムを追加しました。

[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」のようなものを追加するオプションはありません。

助けていただければ幸いです、ありがとうございます。

4

1 に答える 1

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基本的に、2つのアイテム間に関係を作成できるようにオブジェクトをフェッチする必要があり、述語はのtitleOfSelectedItemメソッドに基づいています。

メソッドでオブジェクトを1つだけ選択するようにします[objectAtIndex:0]

ただし、警告が表示されますNSManagedObject may not respond to 'addItemsObject'

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

于 2012-02-10T22:16:26.527 に答える