Core data SwiftUI/CoreData:同时访问0x7f92efc61cb8,但修改需要独占访问

Core data SwiftUI/CoreData:同时访问0x7f92efc61cb8,但修改需要独占访问,core-data,swiftui,Core Data,Swiftui,我正在使用SwiftUI和CoreData开发iOS应用程序,遇到了一个我似乎无法解决的问题 提供一点关于我正在尝试做的事情的信息: 我有两个具有一对多关系的CoreData实体: 狼蛛-狼蛛可能会多次蜕皮(多次蜕皮),一旦被删除,所有的蜕皮也应该被移除(级联) 蜕皮-蜕皮属于一只狼蛛(对一只),删除时,应从狼蛛中删除引用(取消) 然后我有一个视图列出了给定狼蛛的所有蜕皮,允许添加和删除蜕皮。看起来是这样的: struct MoltListView:视图{ 私有静态let日期\格式化程序:日期格

我正在使用SwiftUI和CoreData开发iOS应用程序,遇到了一个我似乎无法解决的问题

提供一点关于我正在尝试做的事情的信息:

我有两个具有一对多关系的CoreData实体:

  • 狼蛛-狼蛛可能会多次蜕皮(多次蜕皮),一旦被删除,所有的蜕皮也应该被移除(级联)
  • 蜕皮-蜕皮属于一只狼蛛(对一只),删除时,应从狼蛛中删除引用(取消)
  • 然后我有一个视图列出了给定狼蛛的所有蜕皮,允许添加和删除蜕皮。看起来是这样的:

    struct MoltListView:视图{
    私有静态let日期\格式化程序:日期格式化程序={
    设d=DateFormatter()
    d、 dateFormat=“MMM d,y”
    返回d
    }()
    @环境(\.managedObjectContext)私有变量viewContext
    @观察对象私人变种狼蛛:狼蛛
    @FetchRequest私有var molts:FetchedResults
    @State private var userMessage:String=“”
    @状态私有变量显示消息:Bool=false
    初始化(狼蛛:狼蛛){
    self.tarantula=狼蛛
    self.\u molts=FetchRequest(实体:Molt.entity(),
    SortDescriptor:[NSSortDescriptor(键路径:\Molt.date,升序:false)],
    谓词:NSPredicate(格式:“狼蛛=%@”,狼蛛))
    }
    var body:一些观点{
    名单{
    章节(标题:正文(“摘要”)){
    文本(“\(molts.count)Molt\(molts.count==1?”:“s”))
    }
    节(标题:文本(“蜕皮”)){
    导航链接(目的地:MoltView(狼蛛:狼蛛,蜕皮:molt.newModel())){
    文本(“添加蜕皮”).foregroundColor(.blue)
    }
    ForEach(molts,id:\.self){moltin
    导航链接(目的地:MoltView(狼蛛:狼蛛,蜕皮:蜕皮)){
    文本(MoltListView.DATE\u FORMATTER.string(from:molt.modelDate))
    }
    }
    .onDelete(执行:删除项)
    }
    }.警报(显示:$displayMessage){
    警报(标题:文本(“保存失败”)、消息:文本(用户消息)、解除按钮:。默认值(文本(“确定”))
    }
    }
    private func deleteItems(偏移量:IndexSet){
    动画片{
    offsets.map{molts[$0]}.forEach(viewContext.delete)
    做{
    请尝试viewContext.save()
    }抓住{
    viewContext.rollback()
    userMessage=“\(错误):\(错误。本地化描述)”
    displayMessage.toggle()
    }
    }
    }
    }
    
    每当我试图从列表视图中删除蜕皮时,就会出现我遇到的错误。应用程序立即崩溃,错误为:

    同时访问0x7ffb68d2c518,但修改需要独占访问。
    以前的访问(修改)是从ListCoreCoordinator.tableView中的SwiftUI`closure#2开始的(u3;:commit:forRowAt:)+53(0x7fff56544a85)。
    当前访问(读取)开始于:
    0 libswiftCore.dylib 0x00007fff2f41fe90 swift_beginAccess+568
    1 SwiftUI 0x00007fff56540670 ListCoreCoordinator.dataSource.getter+50
    2 SwiftUI 0x00007FFF5654140 ListCoreCoordinator.updateUITableView(:to:transaction:)+608
    3 SwiftUI 0x00007fff5653ff40 ListRepresentable.updateUIView(上下文:)+892
    4 SwiftUI 0x00007fff569acc60 PlatformViewRepresentableAdaptor.updateViewProvider(uU7;:上下文:)+263
    5 SwiftUI 0x00007fff565e8ac0闭包#1在闭包中#1在闭包中#4在闭包中#1在PlatformViewChild.updateValue()中+229
    6 SwiftUI 0x00007fff565e89a0闭包#1在闭包中#4在闭包中#1在PlatformViewChild.updateValue()+195
    7 SwiftUI 0x00007fff56899b40 ViewRendererHost.performExternalUpdate(:)+186
    8 SwiftUI 0x00007fff565e8930闭包#闭包中的4个#平台视图中的1个child.updateValue()+73
    9 SwiftUI 0x00007fff565e71e0闭包#1在PlatformViewChild.updateValue()中+2363
    10 SwiftUI 0x00007fff565e6c40 PlatformViewChild.updateValue()+650
    11 SwiftUI 0x00007fff562fa640部分应用隐式闭包#2在隐式闭包中#1在闭包中#1在闭包中#1在属性中。init(35;:)+26
    12 AttributeGraph 0x00007fff4be8952a AG::Graph::UpdateStack::update()+505
    13属性图形0x00007fff4be89a6a AG::图形::更新_属性(AG::数据::ptr,bool)+335
    14属性图0x00007fff4be91884 AG::子图::更新(无符号整数)+781
    15 SwiftUI 0x00007fff5693a5f0 GraphHost.runTransaction()+186
    16 SwiftUI 0x00007fff5693e110 GraphHost.runTransaction(:)+79
    17 SwiftUI 0x00007fff5693cba0 GraphHost.flushTransactions()+211
    18 SwiftUI 0x00007fff5693bd40专用GraphHost.asyncTransaction(512;:突变:样式:)+464
    19 SwiftUI 0x00007fff56509ac0属性验证Subscriber.invalidateAttribute()+236
    20 SwiftUI 0x00007fff56509a40属性未验证订阅方。接收(:)+105
    21订阅服务器的SwiftUI 0x00007fff5650a0d0协议见证。在一致性属性InvalidatingSubscriber+16中接收(:)
    22 SwiftUI 0x00007fff5669a7e0 SubscriptionLifetime.Connection.receive(:)+89