SwiftUIのListビューを使って、簡単な会員一覧ビューを作っている。
その時の開発メモ。

リストに表示しているのは、CoreDataで管理している会員を表すMemberエンティティのnameプロパティだ。

ビューは下記のコードで実装されている。

import SwiftUI
import CoreData

struct MemberListView: View {
  let members: [Member]
  
  var body: some View {
    NavigationView {
      List {
        ForEach(members.indices, id: \.self) { index in
          Text("\(self.members[index].name!)")
        }
      }
      .navigationBarTitle("会員一覧")
    }
  }
}

今回はこのビューに対し、複数のMemberエンティティを格納した配列をプレビューで使用するサンプルコードを紹介する。

struct MemberListView_Previews: PreviewProvider {
  static var previews: some View {
    let context = (UIApplication.shared.delegate as! AppDelegate)
      .persistentContainer.viewContext
    var members = [Member]()
    
    for i in 1...10 {
      let member = Member(context: context)
      member.name = "hoge_\(i)"
      members.append(member)
    }
    
    return MemberListView(members: members)
      .environment(\.managedObjectContext, context)
  }
}

こちらが今回用意したプレビュー用のコード。

Memberエンティティのインスタンス化から、配列への追加までをおこなっている7行目以降がポイントだ。

for文を使うことでコードをコンパクトにまとめることができている。