swiftUI核心数据模型

Posted

技术标签:

【中文标题】swiftUI核心数据模型【英文标题】:swiftUI core data model 【发布时间】:2020-10-09 10:43:15 【问题描述】:

我创建了一个 swiftUI 视图并尝试显示核心数据实体,但预览失败并且应用程序在运行时崩溃。 swiftUI中如何实例化Movie对象并作为状态成员使用?


import SwiftUI

struct SwiftUIView: View 
    @Environment(\.managedObjectContext) private var viewContext
    @State private var movie: Movie = Movie()

    var body: some View 
        Text(movie.title ?? "empty")
    


struct SwiftUIView_Previews: PreviewProvider 
    static var previews: some View 
        let moc = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        SwiftUIView().environment(\.managedObjectContext, moc)
    

【问题讨论】:

您确定要这样做吗,每次加载视图时它都会在 Core Data 中创建一个新实例? 只是演示数据预览 【参考方案1】:

您应该使用上下文创建 CoreData 对象,所以这是可能的方法

struct SwiftUIView: View 
    @Environment(\.managedObjectContext) private var viewContext
    @State private var movie: Movie?

    var body: some View 
        Text(movie.title ?? "empty")
           .onAppear 
              self.movie = Movie(context: viewContext)    // << here !!
           
    

【讨论】:

以上是关于swiftUI核心数据模型的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:按核心数据属性分组和求和

将核心数据从 Swift 迁移到 SwiftUI

如何使用 swiftui 将文本字段存储到核心数据中

SwiftUI / 在两个模型之间组合传递数据

在 SwiftUI 中从数据模型中搜索数组

iOS 14 Beta - Swift UI 中的核心数据错误:任何模型中都没有 NSEntityDescriptions 声明 NSManagedObject 子类