Ios 错误是“不”;将托管对象从其上下文中删除后对其进行变异;删除CoreData中的子级数据时
有两个实体<代码>父对象<代码>和<代码>子对象<代码>,这是一对多关系。单亲和多个孩子 在Ios 错误是“不”;将托管对象从其上下文中删除后对其进行变异;删除CoreData中的子级数据时,ios,core-data,swiftui,Ios,Core Data,Swiftui,有两个实体父对象和子对象,这是一对多关系。单亲和多个孩子 在ChildView中,我将通过self.Child.Parent获取当前Child级别数据的Parent。但是,在以下代码中更新父级时发生错误,并且错误行已指向 import SwiftUI import CoreData struct ChildView: View { var child: Child @ObservedObject private var db = CoreDataDB<Child>
ChildView
中,我将通过self.Child.Parent
获取当前Child
级别数据的Parent
。但是,在以下代码中更新父级时发生错误,并且错误行已指向
import SwiftUI
import CoreData
struct ChildView: View {
var child: Child
@ObservedObject private var db = CoreDataDB<Child>
var body: some View {
VStack {
Button(action: {
CoreData.stack.context.delete(self.child)
self.update()
}) {
Text("delete this child data")
}
}
}
func update() {
let predicate: NSPredicate? = NSPredicate(format: "parent = %@", self.child.parent) // predicate by current child's parent
let children = self.db.loadDB(predicate: predicate)
if children.count != 0 {
children.first!.parent.updateCount(count: children.first!.parent.count) <-- Error occurs in this line when the button tapped every time
}
}
}
导入快捷界面
导入CoreData
结构子视图:视图{
变量child:child
@ObservedObject private var db=CoreDataDB
var body:一些观点{
VStack{
按钮(操作:{
CoreData.stack.context.delete(self.child)
self.update()
}) {
文本(“删除此子数据”)
}
}
}
func update(){
let谓词:NSPredicate?=NSPredicate(格式:“parent=%@”,self.child.parent)//由当前子级的父级进行谓词
让children=self.db.loadDB(谓词:谓词)
如果children.count!=0{
children.first!.parent.updateCount(计数:children.first!.parent.count)