データ保存

ソースコード:MyColorMemoAppSwiftUI

コード

//

import SwiftUI
import RealmSwift

struct MemoDetailView: View {
    /// 新規作成または編集するメモの情報.
    /// Binding($○○)で値を変更すると、自動的にRealmにも反映される
    @ObservedRealmObject var memoData = MemoDataModel()
    /// TextEditorのフォーカス.
    @FocusState var isFocused: Bool

    var body: some View {
        TextEditor(text: $memoData.text)
            .focused($isFocused)
            .toolbar {
                ToolbarItemGroup(placement: .keyboard) {
                    HStack {
                        Spacer()
                        keyboardCloseButton
                    }
                }
            }
            .navigationTitle(dateFormatter.string(from: memoData.recordDate))
            .onDisappear {
                if !memoData.text.isEmpty {
                    saveData()
                }
            }
    }

    /// キーボードを閉じるボタン.
    var keyboardCloseButton: some View {
        Button(
            action: {
                isFocused = false
            }, label: {
                Text("done")
            }
        )
    }
}

extension MemoDetailView {
    /// Date型の値を年月日に表示を変換する.
    var dateFormatter: DateFormatter {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy年MM月dd日"
        return dateFormatter
    }

    /// Realmにメモデータを保存する.
    func saveData() {
        let realm = try! Realm()
        try! realm.write {
            memoData.recordDate = Date()
            realm.add(memoData)
        }
        print(memoData)
    }
}

#Preview {
    MemoDetailView()
}

  • ユーザー名:
  • 受講プラン:
  • 完了ステータス:未完了
cta_img

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

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

受講申し込み