SwiftUI Preview canvas and Core Data

前端 未结 6 1772
孤独总比滥情好
孤独总比滥情好 2020-12-15 18:59

Preview canvas is is crashing but in simulator everything working fine. I assuming it related to @ObservedObject and @Fetchrequest...

tried solution for here Preview

6条回答
  •  太阳男子
    2020-12-15 19:34

    Works for SwiftUI 2 app using the App template

    I also had the previews crash and none of the other solutions were suitable or worked for me.

    What I did was rather than the following:

    struct ContentView_Previews: PreviewProvider {
      
        static var previews: some View {
            return ContentView()
                .environment(
                    \.managedObjectContext,
                    CoreDataManager.context
                )
        }
    }
    

    I fixed it with:

    struct ContentView_Previews: PreviewProvider {
        
        static var previews: some View {
            let context = CoreDataManager.context
    
            /* Optional sample data can be inserted here */
            
            return ContentView()
                .environment(
                    \.managedObjectContext,
                    context
                )
        }
    }
    

    Where CoreDataManager is:

    enum CoreDataManager {
        
        static var context: NSManagedObjectContext {
            persistentContainer.viewContext
        }
        
        static let persistentContainer: NSPersistentContainer = {
            let container = NSPersistentContainer(name: "MyContainerName")
            
            container.loadPersistentStores { description, error in
                guard let error = error else { return }
                fatalError("Core Data error: '\(error.localizedDescription)'.")
            }
            
            return container
        }()
    }
    

    Not exactly sure why this helped, but now it works perfectly. Additionally you can add sample data to this context where I have marked with a comment.

提交回复
热议问题