我的第一个核心数据项目出现问题......
我有多个关系中的两个实体:引用<< --->>锅炉。
当用户在UITableView行中选择Boiler时,我想知道该Boiler是否已经与该页面正在管理的Quote有关系,并切换该关系。
我认为下面的代码失败了,因为Predicate不知道选择了哪个锅炉,但我不能完全理解......
- (void)managedObjectSelected:(NSManagedObject *)managedObject
{
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Boiler" inManagedObjectContext:managedObject.managedObjectContext]];
request.predicate = [NSPredicate predicateWithFormat:@"ANY myQuote = %@", quote];
NSError *error;
NSUInteger count = [managedObject.managedObjectContext countForFetchRequest:request error:&error];
if(count==0){
[quote addMyBoilersObject:(Boiler*) managedObject];
}
else {
[quote removeMyBoilersObject:(Boiler*) managedObject];
}
[managedObject.managedObjectContext save:&error];
}
任何帮助或指示都将不胜感激......
答案 0 :(得分:0)
解决此问题的一种方法是使用NSFetchedResultsController来填充UITableView。如果你这样做,那么你应该能够在
中切换选择- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Get the Boiler that was selected.
Boiler *boiler = (Experiment *) [fetchedResultsController objectAtIndexPath:indexPath];
if (boiler)
{
if ([[self quote] boilers] containsObject:boiler])
{
// connected, so disconnect
}
else
{
// disconnected, so connect
}
}
}
无论如何,你有没有试过这样的东西?