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