目前,我通过以下代码执行多个更新操作。
func updateOrders(_ updates : [(objectID: NSManagedObjectID, order: Int64)]) {
if updates.isEmpty {
return
}
let coreDataStack = CoreDataStack.INSTANCE
let backgroundContext = coreDataStack.backgroundContext
backgroundContext.perform {
for update in updates {
let objectID = update.objectID
let order = update.order
let nsPlainNote = try! backgroundContext.existingObject(with: objectID) as! NSPlainNote
nsPlainNote.order = order
}
RepositoryUtils.saveContextIfPossible(backgroundContext)
}
}
既然我想NSFetchedResultController
的代表被通知 我想使用
NSBatchUpdateRequest
用于执行此类更新操作。但是,我没有找到方法,如何应用
NSManagedObjectID
的数组和 Int64
的数组值,到 NSBatchUpdateRequest
.给定一个数组
NSManagedObjectID
和 Int64
, 是否可以使用 NSBatchUpdateRequest
在 CoreData 上执行更新?
最佳答案
您必须使用 NSPredicate
设置对象ID
func updateOrders(_ updates : [(objectID: NSManagedObjectID, order: Int64)]) {
updates.forEach {
let request = NSBatchUpdateRequest(entityName: "NSPlainNote")
request.propertiesToUpdate = ["order": $0.order]
request.predicate = NSPredicate(format: "objectID == %@", $0.objectID)
let result = try? context.execute(request)
}
}
关于ios - 是否可以使用 NSManagedObjectID 数组执行 NSBatchUpdateRequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66944339/