【发布时间】:2016-11-22 12:51:14
【问题描述】:
我一直在尝试删除一个 NSManagedObject。 这是我的代码:
let app = UIApplication.shared.delegate as! AppDelegate
let context = app.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "MyEnt")
request.predicate = NSPredicate(format: "SELF = %@", EnttoDelete.objectID)
request.returnsObjectsAsFaults = false
do {
let results = try context.fetch(request)
if results.count > 0 {
for result in results as! [NSManagedObject] {
print ("Ent found")
context.delete(result)
do {
try context.save()
} catch {
print("failed to delete")
}
}
}
} catch {
print ("Error in do")
}
}
你有没有看到我确实删除了实体 (EnttoDelete),因此它的 ID (EnttoDelete.objectID)。 现在我什至在 stackoverflow 中也进行了研究,我认为这应该可行。但事实并非如此。 如何删除所需的实体?
【问题讨论】:
-
究竟是什么不起作用?
results有内容吗?如果不是,那么您的请求和/或谓词有问题。 -
是的。我对其他实体做了完全相同的事情,它奏效了。不同之处在于我使用了属性而不是 objectID。在这种情况下它不起作用....但是使用我复制的代码,它可以工作...
-
您也可以尝试
existingObjectWithID获取具有特定ID的实体,然后将其删除。 -
在 Swift 3 中它将是
existingObject(with objectID: NSManagedObjectID)