我试图通过他的objectID删除我的数据库中的对象。 我知道是objectID(choosenID),它是由xcode创建的。
我做到了:
let app = UIApplication.shared.delegate as! AppDelegate
let context = app.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Notes")
request.predicate = NSPredicate(format: "objectID = %@", "\(choosenID)")
request.returnsObjectsAsFaults = false
do {
let results = try context.fetch(request)
if results.count > 0 {
for result in results as! [NSManagedObject] {
print ("Note:")
if let designation = result.value(forKey: "designation") {
print("Designation: \(designation)")
}
context.delete(result)
do {
try context.save()
} catch {
print("failed to delete note")
}
}
}
} catch {
print ("Error in do")
}
如果我使用实体属性执行此类操作,则可以正常工作。但是使用objectID(NSManagedObjectID)它不起作用,应用程序崩溃。 有任何提示如何解决这个问题吗?
编辑:这是崩溃消息: “由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'在实体中找不到keypath objectID'(...)libc ++ abi.dylib:以NSException类型的未捕获异常终止 (lldb)“
我看到我不能在谓词中使用objectID ....我试图使用SELF并且它不起作用....