gpt4 book ai didi

ios - 是否可以使用 NSManagedObjectID 数组执行 NSBatchUpdateRequest?

转载 作者:行者123 更新时间:2023-12-03 17:22:18 25 4
gpt4 key购买 nike

目前,我通过以下代码执行多个更新操作。

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 .
    给定一个数组 NSManagedObjectIDInt64 , 是否可以使用 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com