ios 核心数据和Xcode预览:如何< T>在Xcode预览中将FetchResults传递给视图

uwopmtnx  于 2023-01-22  发布在  iOS
关注(0)|答案(1)|浏览(95)

我在SwiftUI中有一个名为“MyListsView”的视图。它需要传递类型为“FetchedResults”的列表。

struct MyListsView: View {
    
    let lists: FetchedResults<MyList>
}

主要的问题是我如何在Xcode预览中使用它。主要原因是在Xcode预览中,我不能使用@FetchRequest属性 Package 器。@FetchRequest属性 Package 器允许我创建FetchResults。

static var previews: some View {
            
           
            
            MyListsView(lists: HOW TO PASS FetchResults<MyList> HERE  )
                .environment(\.managedObjectContext, CoreDataProvider.shared.viewContext)
        }
qjp7pelc

qjp7pelc1#

这在WWDC 2020的Structure your app for SwiftUI previews中有所涉及,在18:00他介绍了“中间视图”的概念,例如

struct MyListsView_Previews: PreviewProvider {

    struct MyListViewContainer: View {

        @FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \Item.timestamp, ascending: true)], animation: .default)
        private var items: FetchedResults<Item>

        var body: some View {
            MyListsView(lists: items)
        }
    }

    static var previews: some View {
        MyListViewContainer()
       .environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
    }
}

注意:在预览的时候一定要使用PersistenceController的预览单例。

相关问题