1 csv形式で取り込んだデータ(1,like,好きのように番号と単語と訳の3つでワンセット)を画面起動時にRealmに取り込む
作りたいものを拝見する限り、CSVのデータを Realm に保存し直すメリットは低いように思えます。
起動毎にCSVのデータを読み込むのであれば、質問を管理する構造体やクラスを作り、それに質問のデータを保存した方が使いやすそうに思えます。
2 保存したデータを呼び出し、ワンセットごとにラベルなどに表示し、ボタンを押すと次のワンセットが表示されるようにする
インスタンス内部で現在の設問番号を管理したり、あるいは次の質問を出すメソッドを作る方法になるかと思います。
たとえば、デザインパターンの一つである「シングルトン」を用いた方法が次のリンクにありました。
Swift3で書かれていますが、ざっと見た感じSwift5でも使えそうです。しかも、CSVからデータを読み込む方法で質問を管理しているので、応用が効くかもしれません。
3 ミスをした場合、ボタンなどを押すことによって当該するワンセットを新たにRealmに保存し、ミスをした単語を確認できるようにする
間違った設問などもインスタンス内に保持しておき、それをあるタイミングでデータベースに記録させ永続化させる方法がありそうな感じがします。
ちなみに、その程度であれば UserDefaults で保存するのが手軽かもしれません。
作りたいもの
まずcsvのデータをRealmに保存するにはどのようにすればいいのか
Realm もオブジェクトとして管理していることを考えると、CSV データを構造体やクラスに保存するようなサンプルが参考になりそうに思います。
そしてそのデータを先頭からワンセットづつ順番に呼ぶにはどのようにすればいいのか(csvをRealmに保存する説明の記事は色々読んでみたがここが特にわからなかった)
先にも触れたように、現在の問題番号を保持するプロパティを準備しておき、次の質問を取り出すたびにインクリメントするような作りになるのでしょうか。
Realmを使った場合でもやり方は同じで、どこかで現在の質問番号を記録しておく必要があります。
プライマリキーを使ってデータを判別しているとのことだが、具体的にどのように使えばいいのか
Realm に保存するオブジェクトにidを与えることで、各オブジェクトを一意にすることが可能となります。
単語アプリの場合は可能性は低いですが、たとえば氏名を管理するアプリであれば、同姓同名が存在する可能性は十分に考えられます。そのような場合、個人を識別する方法としてプライマリーキーを使うことになります(出席番号とかマイナンバーのような感じです)。
単語アプリの場合も何らかの基準を作り、それを用いてプライマリーキーにすることになります。
連番でもいいと思いますし、登録日時、あるいはUUIDと呼ばれるものを使う方法もあります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/27 05:20