Che*_*eng 5 core-data ios swift
目前,我通过以下代码执行多个更新操作。
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)
}
}
Run Code Online (Sandbox Code Playgroud)
既然我愿意
NSFetchedResultController被通知的委托我想NSBatchUpdateRequest用于执行此类更新操作。
但是,我没有找到一种方法,如何将数组NSManagedObjectID和Int64值数组应用于NSBatchUpdateRequest.
给定一个NSManagedObjectIDand数组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)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |