swift 如何将文本字段文本绑定到coredata属性

nhhxz33t  于 2022-12-22  发布在  Swift
关注(0)|答案(1)|浏览(111)

我有一个名为"fruit"的核心数据实体。我有一个名为"fruitName"的水果属性,其类型为String。我希望在TextField()中而不仅仅是Text()中显示此属性,以便用户可以更轻松地编辑此属性。我在将TextField中的text参数绑定到fruit.fruitName时遇到问题。
下面是代码:

import CoreData

struct FruitRowView: View {
    
    //instance of core data model
    @ObservedObject var vm: CoreDataViewModel
    
    var fruit: FruitEntity
    
    var body: some View {
        TextField("Enter fruit name", text: $fruit.name)
    }
}

当我试图构建时,得到的错误是:'Cannot find' $fruit 'in scope'我认为这意味着我不能用这种方式绑定变量。我确信有一种简单的方法可以解决这个问题,这样我就可以在TextField中显示这个属性,但我还没有弄清楚。

pgx2nnw8

pgx2nnw81#

要“...将文本域文本绑定到coredata属性”,可以尝试这种方法,声明@ObservedObject var fruit: FruitEntity。由于CoreData使用可选项,因此还需要测试非空值,如代码所示。

struct FruitRowView: View {
    @ObservedObject var fruit: FruitEntity
    
    var body: some View {
        VStack {
            if fruit.name != nil {
                TextField("Enter fruit name", text: Binding($fruit.name)!)
            }
        }
        .onAppear {
            if fruit.name == nil {
                fruit.name = ""
            }
        }
    }
}

相关问题