質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

337閲覧

ToDoアプリでRealmのobjectsはどこで取得するのがよいでしょうか?

ikadroka

総合スコア8

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2018/02/28 05:28

前提・実現したいこと

swiftでiPhone用ToDoアプリを作る練習をしている初心者です
画面に一覧表示をするViewControllerと
入力をするInputViewControllerをおいています
データはRealmSwiftで保存しています

このとき
ViewControllerでのデータ一覧表示のためのtry! Realm().objects()は、
下の1~3のいずれの場所に書くのがよいのでしょうか
1)ViewControllerのViewWillAppearに書く
2)ViewControllerのoverride func tableView()のnumberOfRowsInSectionとcellForRowAtに書く
3)ViewControllerの最初にvar taskArray = try! Realm().objects()を書き
override func tabeleView()のnumberOfRowsInSectionやcellForRowAtに
taskArray.countやtaskArray[indexPath.row]をつくる

初めての質問で書き方とかもおかしかったら申し訳ありません
よろしくお願いいたします

試したこと

ネットで検索すると上の3つの方法が見つかり
それぞれ動くようなのですが
考え方の違いとか、使い分けとか、条件によってエラーになるとかの違いが分かりませんでした

補足情報(FW/ツールのバージョンなど)

xcode 9, swift 4, RealmSwift 3.0.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  • ViewController → InputViewControllerで入力 → ViewControllerに戻る。
  • 入力したデータは InputViewController で保存している。

という前提ならば、データの取得は1番の「viewWillAppearで取得」が良いと思います。(リストが更新される様子を敢えて見せたい場合はviewDidAppearで取得/更新するのが良いでしょう)

2番は、セル生成のたびに取得することになり、今回の用途には不向きです。(そんな頻度で取得する必要は無い)

3番は、ViewController生成時にしか取得しませんので、InputViewController から戻ってきたときにリストが更新されません。(viewDidLoadに書いた場合も同じです)

投稿2018/03/02 11:42

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikadroka

2018/03/02 14:54

ありがとうございます。ViewWillDisappearで保存し、ViewWillAppearで読み込むのを基本にすればよいのですね。 ViewControllerの最初やViewDidLoadだと戻ってきた時には呼ばれないというのも、今まで理解していませんでした。大変参考になりました。ありがとうございました。オブジェクト指向のプログラミングというもの自体をまだよく理解できていない状態です。そちらも勉強してみます。いつも気にはなっていたのですが、ViewControllerの最初のあたりだとプリントデバッグもできなくて、いつ呼ばれてるのかよく分からなくて困っていました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問