swift - SwiftUI Core Data NSManagedObjectContext“无法识别的选择器发送到实例”错误
问题描述
在视图模型中,我尝试调用两个函数,其中一个创建新列表“addNewList”,在该函数中,我创建一个新的子列表“addMainSublist”,如下面的代码所示,“addNewList”函数完美运行。此外,当我尝试在“addNewList”中调用“addMainSublist”时,当我尝试在 CoreData 中保存新子列表时,“PersistenceController”文件中显示的照片中的错误,我在 SwiftUI 视图中调用“addNewList”并采用“moc " SwiftUI 视图中“@Environment(.managedObjectContext) private var managedObjectContext”属性的参数。
注意:正如您在下面的代码中看到的,我使用相同的“managedObjectContext”来保存新列表和新子列表,当我删除模拟器中的所有内容并尝试创建新列表时,错误没有显示,但在第二次尝试再次显示错误。
func addNewList(moc: NSManagedObjectContext, mainLists: FetchedResults<ListOfTasks>, favoriteLists: FetchedResults<ListOfTasks>) {
let newList = ListOfTasks(context: moc)
newList.id = UUID()
newList.addedDate = addedDate
newList.title = title
newList.icon = icon
newList.color = Color.set(stringfor: color)
newList.origin_Group = origin_Group
if origin_Group == nil {
newList.state = ListState.list.rawValue
newList.index = Int16(mainLists.count)
newList.isFavorite = isFavorite
newList.favoriteIndex = Int16(isFavorite ? favoriteLists.count : 0)
}else{
if let wrappedGroup = origin_Group {
newList.state = ListState.sublist.rawValue
newList.index = Int16(wrappedGroup.listsArray.count-1)
newList.isFavorite = false
newList.favoriteIndex = 0
}
}
newList.isLocked = isLocked
newList.isArchived = isArchived
PersistenceController.shared.save()
addMainSublist(to: newList, moc: moc)
}
func addMainSublist(to newList: ListOfTasks, moc: NSManagedObjectContext) {
let mainSublist = Sublist(context: moc)
mainSublist.origin_List = newList
mainSublist.id = UUID()
mainSublist.addedDate = Date()
mainSublist.index = 0
mainSublist.title = "\(title)_MainSublist"
mainSublist.isExpanded = false
mainSublist.isArchived = false
PersistenceController.shared.save()
}
错误照片
解决方案
Joakim Danielson 的回答给了我关于“比较”的注释,问题是使用排序描述“list.title”来获取 SwiftUI 视图中的所有子列表进行调试,当我更改错误消失时,感谢“ Joakim Danielson”,感谢他的宝贵笔记。
推荐阅读
- reactjs - 新的 React Context API + LocalStorage + Subscribe(替代 Redux)
- angular - 如果 ng-content 的目标元素在路由器出口中,则 ng-content 的“选择”不起作用
- ffmpeg - 如何编码 xdcam.mxf 并设置 mediainfo 标志“标准:组件”
- javascript - 为什么 ng-change 在选定的 js 中不起作用
- c# - 选择然后删除选定的列表项
- node.js - Mongoose 对象 id 约束
- excel - SmartView 连接
- xamarin.forms - 如何在我的应用程序中打开一个网站以便 Google Play 接受它?
- django - request() 得到了一个意外的关键字参数“客户”
- sql - 将 SQLView 结果中的列转换为日期并按用户指定的日期过滤