How/Where 将核心数据实体变量分配给结构是 SwiftUI 中的 @State 变量吗?

How/Where to assign CoreData entity's variable to structs's @State variable in SwiftUI?

我使用@State 变量(title, description) 与其他视图(UITextView) 进行通信。该视图有一个绑定字符串变量 (text).

我想使用特定的 CoreData 实体 (Item) 来更新我的 @State 变量,因此 UITextView 中的文本会在视图出现时更新(因此 UITextView 不会显示为空白)。据我所知,我首先应该以某种方式将该 CoreData 实体变量分配给我的 @State 变量,当我从 UITextView 获得关于我的 @State 变量的更新时,我应该将上下文保存到我的 CoreData 实体。我使用 init() 进行初始分配,在进行实时预览调试之前我没有收到任何错误。我收到此错误(作为调试器消息):

Failed to call designated initializer on NSManagedObject class 'Item'

此外,预览中缺少文字。

也许还有其他方法可以满足我的要求?

这是我的代码:

主视图

struct DetailView: View {
    @ObservedObject var item: Item = Item()
    @State private var title = ""
    @State private var description = ""
    init (item: Note)
    {
        self.item = item
        self.title = item.title!
...
 TextView(text: self.$title...
...
TextView(text: self.$details...
...

TextView

struct TextView: UIViewRepresentable {
    @Binding var text: String
...
func updateUIView(_ uiView: UITextView, context: Context) {
        uiView.text = text
...

P.S。当我在 CoreData 实体的 属性(例如 self.item.title)中直接传递(忽略我的 @State 变量的存在)作为显示文本的 UITextView 的参数时,它确实有效但我不知道如何保存更改UITextView直接转为CoreData实体

有几种方法可以做到这一点。

有很多教程的 @FetchedRequest 方法。

https://www.hackingwithswift.com/quick-start/swiftui/what-is-the-fetchrequest-property-wrapper

使用该方法,您将传递正在编辑的 users 对象。

此外,您可以使用 FetchedResultsController

https://www.youtube.com/watch?v=-U-4Zon6dbE

这样你就可以拥有一个 @ObservableObjectCoreData 个对象

https://developer.apple.com/documentation/coredata/nsfetchedresultscontroller

一个ManagedObjectCoreData对象已经符合ObservableObject https://developer.apple.com/documentation/coredata/nsmanagedobject

你不需要把它放在一个 @State 你只需要从 CoreData 传递获取的对象。

此外,当用户使用完对象后,您需要 save managedObjectContext