CoreDataのエンティティーをプレビューで渡す

CoreDataのエンティティー(クラス)をSwift UIのPreviewで渡したい時にどうするかです。

struct DetailBookView: View {
    var be:BookEntity?
    
    var body: some View {
:

例えば、BookEntityをCoreDataのモデルとして定義していて、このViewではその中身を表示したいとします。

メンバとして定義しているので、プレビューでテストデータを入れて表示したいとします。

デフォルトだとPersisitanceでサンプルデータを10件作っていますので、サンプルデータから1つ取り出してあげれば良いのです。

struct DetailBookView_Previews: PreviewProvider {
    static var previews: some View {
        DetailBookView(be: item)
    }
    static var item: BookEntity {
        let context = PersistenceController.preview.container.viewContext
        let request = BookEntity.fetchRequest()
        request.sortDescriptors = [NSSortDescriptor(keyPath: \BookEntity.createdat, ascending: true)]
        do {
            let fetchedItems = try context.fetch(request)
            return fetchedItems.first!
        } catch {
            fatalError()
        }
    }
}

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog