为啥我在保存 managedObjectContext 时得到 nilError? [复制]
Posted
技术标签:
【中文标题】为啥我在保存 managedObjectContext 时得到 nilError? [复制]【英文标题】:why I got nilError while saving managedObjectContext? [duplicate]为什么我在保存 managedObjectContext 时得到 nilError? [复制] 【发布时间】:2020-07-27 11:19:44 【问题描述】:我有一些传递信息的视图。 最后我想保存数据,但我得到“nilError”。
我怎样才能让床单从右到左淡入?
我是新手,但希望有人能提供帮助。
型号:
import Foundation
import CoreData
public class Test: NSManagedObject, Identifiable
@NSManaged public var name: String?
@NSManaged public var message: String?
.xcdatamodel: 属性:“name”和“message”,String和“Class.name”:test,“Module”:当前产品模块,“Codegen”:Manual/None (对不起,我不允许上传图片)
观看次数:
import SwiftUI
struct ThirdView: View
@Environment(\.managedObjectContext) var managedObjectContext
@Environment(\.presentationMode) var presentationMode
@State private var showingSheet = false
let name: String
let message: String
var body: some View
List
Text(name + ": " + message)
Button("Dismiss")
self.saveThis()
self.presentationMode.wrappedValue.dismiss()
func saveThis()
let newEntry = Test(context: self.managedObjectContext)
newEntry.message = self.message
newEntry.name = self.name
do
try self.managedObjectContext.save()
catch
print(error)
struct SecondView: View
@Environment(\.presentationMode) var presentationMode
@State private var showingSheet = false
let name: String?
@State private var message: String = ""
var body: some View
List
TextField("Message: ", text: $message)
Button("Next")
self.showingSheet.toggle()
.sheet(isPresented: $showingSheet)
ThirdView(name: self.name!, message: self.message)
struct NewEntry: View
@State private var showingSheet = false
var body: some View
Button("Show Sheet")
self.showingSheet.toggle()
.sheet(isPresented: $showingSheet)
SecondView(name: "Fritz")
...我的 xcdatamodel 和其他一些模型类中有另一个实体来保存其他信息,我没有问题。 这可能很愚蠢,但有可能我只能拥有这些托管对象之一吗?
【问题讨论】:
【参考方案1】:.sheet
修饰符引入了新的视图层次结构,因此您必须设置任何所需的环境值才能在工作表中显式查看(在本例中为上下文),例如
.sheet(isPresented: $showingSheet)
ThirdView(name: self.name!, message: self.message)
.environment(\.managedObjectContext, managedObjectContext)
然后在
中声明它struct SecondView: View
@Environment(\.managedObjectContext) var managedObjectContext
@Environment(\.presentationMode) var presentationMode
...
【讨论】:
好的,听起来不错,但现在它在 func saveThis 中显示“ThirdView 类型的值没有成员 'managedObjectContext'”如何解决? 您的 SecondView 也显示在工作表中,因此也应该这样做。 我忘了在“NewEntry”中声明环境变量,非常感谢!以上是关于为啥我在保存 managedObjectContext 时得到 nilError? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 SwiftUI 中重新打开应用程序时没有保存 CoreData?