SwiftUI Preview canvas and Core Data

前端 未结 6 1773
孤独总比滥情好
孤独总比滥情好 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:23

    This is my solution.

    I don't want use CoreData in view. I want MVVM style. So you need to mock Core data for display in Canvas view.

    This is an example :

    // View
    struct MyView: View {
        @ObservedObject var viewModel: PreviewViewModel
    }
    
    // View Model
    final class MyViewModel: ObservableObject {
       @Published var repository: RepositoryProtocol // CoreData
    }
    
    // Repository
    protocol RepositoryProtocol { }
    class Repository: RepositoryProtocol { ... } 
    class MockRepository: RepositoryProtocol { ... } // Create a Mock
    
    
    // Init of your view
    // If Canvas use mock
    if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
        repository = MockRepository() 
        
    // else App use Repository
    } else {
        repository = Repository.shared
    }
    
    let viewModel = MyViewModel(repository:repository)
    MyViewModel(viewModel: viewModel)
    

提交回复
热议问题