//
import SwiftUI
struct HomeView: View {
@State var memoDataList: [String] = []
var body: some View {
NavigationStack {
VStack {
memoList
Spacer()
}
}
.onAppear {
memoDataList = ["バナナを買う", "本を読む", "散歩する"]
}
}
/// メモ一覧.
var memoList: some View {
List {
ForEach(memoDataList, id: \.self) { memo in
NavigationLink(
destination:
MemoDetailView()
) {
Text(memo)
}
}
}
.listStyle(.plain)
}
}
// MARK: View Components
extension HomeView {
/// メモ一覧に表示するセル.
func memoCell(_ memo: MemoDataModel) -> some View {
VStack(alignment: .leading) {
// メモのテキスト
Text(memo.text)
.font(.body)
// メモの作成・編集日時
Text(formatDate.string(from: memo.recordDate))
.font(.footnote)
}
}
}
extension HomeView {
// 表示形式を変更した日付
var formatDate: DateFormatter {
let formatter = DateFormatter()
// Apple が推奨する固定フォーマット用ロケール
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(identifier: "UTC")
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
return formatter
}
}
#Preview {
HomeView()
}
//
import RealmSwift
class MemoDataModel: Object, ObjectKeyIdentifiable {
/// データを一意に識別するためのプライマリーキー.
@Persisted(primaryKey: true) var id: ObjectId
@Persisted var text: String = ""
@Persisted var recordDate: Date = Date()
/// Realmが必要とする初期化子.
required override init() {
super.init()
}
}