2011-12-15 11 views
4

"name"という属性に応じて、コアデータからエンティティをフェッチしようとしています。ここに私のコードは次のとおりです。コアデータSubEntitiesByName属性を使用してエンティティを検索する場合

NSManagedObjectContext *context = [self managedObjectContext]; 



    NSEntityDescription *vegetable = [NSEntityDescription insertNewObjectForEntityForName:@"Vegetable" inManagedObjectContext:context]; 

    // get the vegetable using name 

    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 

    NSPredicate *predicate = 
    [NSPredicate predicateWithFormat:@"name == %@", myGardenViewModel.vegetable.name]; 

    [request setEntity:vegetable]; 
    [request setPredicate:predicate]; 

    NSError *error; 

    NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:request error:&error]; 

最後の行には、次の例外がスローされます。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Vegetable subentitiesByName]: unrecognized selector sent to instance 0x6bbcdd0' 

任意のアイデア?

答えて

7

NSFetchRequestentityプロパティを設定する方法が問題です。 insertNewObjectForEntity:を使用すると、実際には[managedObjectContext save:&error];で後でデータベースに挿入する新しいオブジェクトを作成しています。

NSEntityDescription *vegetable = [NSEntityDescription entityForName:@"Location" 
    inManagedObjectContext:self.managedObjectContext]; 

やりたいことだけではなく、新しいオブジェクトを挿入するよりも、あなたのフェッチ要求のためのエンティティを設定することです

関連する問題