我在删除时得到了间歇性的结果。有时候对象会被删除,但是大多数时候我重新启动项目甚至直接删除代码之后,商店仍然会提取对象的实例。我正在删除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()
,它会再次找到该对象。错误块永远不会触发,所以我认为这里还有其他问题。任何想法在哪里看?
答案 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()
实际上正在返回所需的对象,否则不要做出假设。