ios - 核心数据删除的项目即使在删除后也是可见的(直到应用程序重新启动)

标签 ios core-data ios7

我在两个表之间建立了多对多关系,比如表 A 和 B。

为了业务逻辑,我已将此属性设置为“无操作”作为删除规则。

第 1 步:现在我正在删除表 A 项。

第 2 步:删除表 A 项目后,我想删除表 B 中与表 A 中的任何项目无关的那些项目。

所以第 2 步删除的代码片段有点像这样:

for (TableBItem* item in fetchedObjects) {
    if ([[item.tableAproperty allObjects] count] == 0) {
        [context deleteObject:item];
    }
} 
 //save context
 [context save:&error]

在此之后,当我获取 tableB 对象时,它甚至会显示我试图删除的那些项目。

如果我终止应用程序并再次启动,那么获取项目将按预期工作。

知道这里可能出了什么问题。提前致谢。

最佳答案

实现此目的的一种行之有效的方法是在您的托管对象子类中为 TableBItem 重写删除对象 Xcode 生成的 setter 方法(顺便说一句,一个糟糕的名称 - 还有 tableAProperty具有误导性,因为它是一种关系而不是属性)。

-(void)removeTableAPropertyObject:(TableAItem *)value {
     [super removeTableAPropertyObject:value];
     if (!self.tableAProperty.count) {
        [self.managedObjectContext deleteObject:self];
     }
}

关于ios - 核心数据删除的项目即使在删除后也是可见的(直到应用程序重新启动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20592472/

相关文章:

ios - "pod install --verbose"错误

swift : get the closest date stored in the core data

objective-c - IOS 7 引入的 JavaScriptCore.framework Objective-C API 给出了一个错误的 NSDate 转换(BUG?)

ios - 使用 NSURLSession 上传文件

ios - Flipboard ipad 应用程序 : right menu panel slide effect

ios - 弹出后 UINavigationController 为零

ios - 用 JSON 响应中的空字符串替换 null 在 iOS 中不起作用

objective-c - 从距当前位置最近到最远对 NSManagedObject 进行排序

ios - 如何将不同的页面信息保存到同一个tableviewcell?

ios - 在 UINavigationController 中推送 View Controller