メモ用モデルの作成

ソースコード:MyColorMemoAppSwiftUI

コード

//

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()
    }
}
  • ユーザー名:
  • 受講プラン:
  • 完了ステータス:未完了
cta_img

受講申し込みはこちらから

まずは受講用アカウントの作成からスタート。
iOSアカデミアの受講に必要な各種情報を記載した、ご案内メールをお届けします。

受講申し込み