2011-12-15 116 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];