xcode - SwfitUI 2.0 Xcode 12 如何更新核心数据实体的单个属性
问题描述
我正在尝试在我的视图模型中实现一个重置方法,该方法将在按钮操作的视图中调用因此视图将得到更新和持久化
这是我的视图模型中发布的实体的属性
var viewContext: NSManagedObjectContext { PersistenceController.shared.container.viewContext }
@Published var price: Double
@Published var qty: Int
@Published var subtotal: Double
这是我尝试过的 resetAllCounters 方法 我知道这是错误的方法 我只想将 qty 重置为 0 并更新所有计数器
func resetAllSubtotals(){
let allCounters: NSFetchRequest<WindowCounter> = WindowCounter.fetchRequest()
do {
let savedWindowCounters = try self.viewContext.fetch(allCounters)
for counter in savedWindowCounters {
counter.qty = 0
}
try self.viewContext.save()
} catch {
print(error.localizedDescription)
}
}
解决方案
利用NSBatchUpdateRequest
func resetAllSubtotals(){
let request = NSBatchUpdateRequest(entityName: "WindowCounter")
request.propertiesToUpdate = ["qty":0]
request.resultType = .updatedObjectsCountResultType
do {
let result = try context.execute(request) as! NSBatchUpdateResult
//This print the number of rows affected/updated
print(result.result!)
}catch {
//Handel Catch here
}
}
推荐阅读
- python - 如何在 Python 中更改直方图 Y 轴上的值
- jmeter - 无法将值从 beanshell 预处理器传递给采样器?
- javascript - PostgreSQL 与 TypeORM 错误“在 \"Sep\" 处或附近出现语法错误”
- powerbi - 过滤器以意想不到的方式影响测量
- php - 如何在 php 中的子项数组中搜索?
- python - 如何通过交叉验证使用数据增强
- c - 为什么不允许在全局(文件)范围内初始化结构成员,但在函数内部可以这样做?
- python - 限制图中条形图的数量
- javascript - JavaScript 中止任务,如果它花费超过 xxx 秒
- javascript - 如何在 JavaScript 中操作数组中所有特定字符串值的每个实例?