SwiftUI中的核心数据

时间:2020-04-25 09:58:41

标签: core-data swiftui

试图在SwiftUI中实现核心数据,我遇到了麻烦。 经过许多教程,我写了下面的项目,大概是按照指示进行的,但是该应用程序无法构建。

我还处于初期阶段,所以希望有人可以在这里提供帮助。

  • 我在XCDtatamodel中创建了2个实体,每个实体都有一个名为“ airportName”的字符串属性
  • 我只是尝试显示其中一个实体的列表:
import SwiftUI
import CoreData

struct ContentView: View {

    @Environment(\.managedObjectContext) var managedObjectContext

    @FetchRequest(entity: Takeoffs.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Takeoffs.eventDate, ascending: false)]) var fetchedTakeoffs: FetchedResults<Takeoffs>

    var body: some View {

        List {
            ForEach (fetchedTakeoffs, id: \.self) { item in
                Text(item.airportName) // THIS IS WHERE I GET THE ERROR

            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        return ContentView().environment(\.managedObjectContext, context)
    }
}

但是Xcode告诉我“类型'NSManagedObject'的值没有成员'airportName'” 就像我的XCDatamodel未连接到应用程序。

我通过选中SwiftUI,使用CoreData复选框创建了项目。

完整的代码可以在这里找到:

https://github.com/Esowes/RecentExp

感谢任何指针。

1 个答案:

答案 0 :(得分:1)

我能够构建它。但是不确定它是否会按预期运行。请通过。我认为takeOff项的属性是可选的,您会遇到错误。

List {
    ForEach (fetchedTakeoffs, id: \.self) { item  in
       Text(item.airportName ?? "")
    }
}