我所知道的
1:在事务或视图期间,我能够从单个实体(表)中删除记录 - 成功:)
我想做什么
在类别视图的代码中当我删除类别时,我希望删除相应的库存项目;
我知道我可以为此删除设置一些关系,但我无法找到一个好的链接或一个例子,我无法应用该规则
这是我的代码
(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
PIMCategoryListCellTableViewCell *cell = (PIMCategoryListCellTableViewCell*) [tableView cellForRowAtIndexPath:indexPath];
if (editingStyle == UITableViewCellEditingStyleDelete) {
// [self.tblView beginUpdates];
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
//Records from Category entity(table) deleted -- Success So far
[context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
// Use the fetch result controller to get the corresponding item of same category
self.fetchedResultsControllerCategory = nil;
[self fetchedResultsControllerItem:cell.categoryName.text];
NSUInteger count = [self.fetchedResultsControllerCategory.fetchedObjects count];
//this way I know if any item are present for the category
if (count> 0)
{
NSManagedObjectContext *contextN = [self.fetchedResultsControllerCategory managedObjectContext];
NSIndexPath *i;
for ( i.row =0 ; i==1;i++ )
{
[contextN deleteObject:[self.fetchedResultsControllerCategory ob ];
}
// @property (strong, nonatomic) id detailItem;
// [contextN deleteObject:[self.fetchedResultsControllerCategory ob ];
//[contextN reset]
NSError *error = nil;
if (![contextN save:&error]) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
// [self.tblView endUpdates];
}
}}
现在我尝试更改上下文但仍无法删除第二个实体(表)记录
任何建议,;如果您需要更多解释,请告诉我
答案 0 :(得分:0)
您需要在核心数据编辑器中设置关系。
从库存中删除“类别名称”属性,而是创建与“类别”的关系。 (以及从类别到库存的反比关系)
然后,您可以将类别关系的删除规则设置为“级联”,然后在删除类别后立即删除任何相关的广告资源。
答案 1 :(得分:0)
好的,让我们把事情弄清楚,你有两个实体,即库存和类别。
每个类别都有很多库存,如果用户删除类别,则所有库存都应自动删除。
这样做非常简单,可以在XCODE的模型编辑器中完成。
创建两个实体后,只需将关系从一个实体拖到另一个实体。 双击它所说的位置,newRelationship并给出你的关系名称。 选择类别上的关系,然后单击左上角的模型编辑器,将TYPE更改为MANY。同时将删除规则更改为 - CASCADE。 查看我附带的图像,以了解这一切。 然后,您可以使用传统的托管对象上下文方法来删除类别,它应该自动删除与该类别关联的清单。