@State 和 CoreData 的 SwiftUI 预览问题

Posted

技术标签:

【中文标题】@State 和 CoreData 的 SwiftUI 预览问题【英文标题】:SwiftUI Preview issue with @State and CoreData 【发布时间】:2020-07-14 15:38:43 【问题描述】:

我在预览看起来很简单的结构时遇到了麻烦。 Customer 是一个 CoreData 实体:

struct CustomerDetailView: View 
    
    @Environment(\.managedObjectContext) var moc
    @State var showNewCustomer = false
    
    var customer: Customer
    
    var body: some View 

我已经尝试了几乎所有不起作用的方法,包括这个:

struct CustomerDetail_Previews: PreviewProvider 
    static var previews: some View 
        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        return
            CustomerDetailView(customer: --Not sure what works here-- ).environment(\.managedObjectContext, context)
    
    

我尝试了 static let customer = Customer() 以便在最后一行使用一个客户变量,但这没有帮助。

【问题讨论】:

【参考方案1】:

Preview 对应用使用不同的容器,因此您可以创建新的Customer,例如

struct CustomerDetail_Previews: PreviewProvider 
    static var previews: some View 
        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        return
            CustomerDetailView(customer: Customer(context: context))
               .environment(\.managedObjectContext, context)
    
    

【讨论】:

以上是关于@State 和 CoreData 的 SwiftUI 预览问题的主要内容,如果未能解决你的问题,请参考以下文章

CoreData学习:Core Data Stack(Swift)

在 Swift 中使用 RestKit 和 CoreData

保存/获取 CoreData 关系 Swift 3

Swift 和 CoreData 与自定义类作为可转换对象

如何使用 Swift 删除 coredata 中的特定记录?

swift 3 Xcode 8 中的 NSManagedObject 和 CoreData