核心数据删除只能间歇性地工作

时间:2016-01-14 18:02:21

标签: ios swift core-data

我在删除时得到了间歇性的结果。有时候对象会被删除,但是大多数时候我重新启动项目甚至直接删除代码之后,商店仍然会提取对象的实例。我正在删除managedObjectContext中对AppDelegate的引用,并确保保存删除后的内容。

   if let object = getById(id, context: context){
        context.deleteObject(object)
        do{
            print("Deleteing object by id")
            try context.save()
        }catch{
            print("Unable to delete object for some reason")
        }
   }

如果我在成功保存删除后再次运行具有相同ID的getById(),它会再次找到该对象。错误块永远不会触发,所以我认为这里还有其他问题。任何想法在哪里看?

2 个答案:

答案 0 :(得分:2)

我认为你在进入do循环之前删除了找到的对象,而context.save()正在保存它。这可能是您在查找对象时未触发Error块的原因。

尝试 -

if let object = getById(id, context: context) {
  do {
      try context.deleteObject(object)
      try context.save() (I am still not sure if this statement should be there!!!)
      print()

}catch{
      print()
}
}

希望有所帮助。

答案 1 :(得分:1)

想出来。删除总是工作正常,问题是我在getById()方法中获取的标识符并不总是唯一的。这导致间歇性删除发生,因为如果有7个id为1的对象,那么第一个对象实际上是我希望删除的对象的1/7。

长话短说,检查整个问题,除非你在我的情况下确定getById()实际上正在返回所需的对象,否则不要做出假设。