小编Tae*_*Kim的帖子

Swift:使用 self.moc.save() 保存核心数据时出现 Nil 错误

自从我将项目更改为使用“objectWillChange.send()”以来,我收到零错误。因为我需要手动更新视图,因为它不会为自定义轮播视图更新自身(因为核心数据?)。

如果我写“1”并点击下一步按钮(NavigationLink)

控制台日志
page.name: 1
捕获错误: nilError

这是代码。

添加页面类

class AddPage: ObservableObject {
@Environment(\.presentationMode) var presentation
@Environment(\.managedObjectContext) var moc

    func addPage(item: String) {
    
        if item != "" {
        
            let page = Page(context: self.moc)
            page.name = item
        
            do {
                print("page.name: \(page.name ?? "Unknown")")
                try self.moc.save()
            } catch {
            print("catch: \(error)")
            }
        
            objectWillChange.send()
            presentation.wrappedValue.dismiss()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

添加页面视图

@ObservedObject var add = AddPage()  

NavigationLink(destination: ContentView()){
Text("Next")
    .background(
        Rectangle()
            .frame(width: 330, height: 60, alignment: .center)
    )
    .onTapGesture {
        add.addPage(item: pageName)
    }
}
Run Code Online (Sandbox Code Playgroud)

场景委托类 …

core-data environment-variables observable swift swiftui

2
推荐指数
1
解决办法
734
查看次数