2017-12-23 4 views
0

私はUIPageViewControllerを持っています。複数のView Controllerを持っていて、それぞれがユーザーの反応に疑問を持っています。これらの質問に答えると、値をローカルに保存したいので、後でこれらの値が入力されたPDFを作成することができます。これを行う最善の方法は何ですか? NSUserDefaultsを使用しますか?UIPageViewControllerの子ビューコントローラからの値を保存して、アプリケーションの別の場所で使用するにはどうすればよいですか?

+0

私の2セント:単純な数字/文字列の真偽である4-5の回答のようなものであれば、UserDefaultsを使用して逃げることはできますが、それはそれらの通常の仕事ではありません...そうでなければCoreData構造を調べます。 –

+2

あなたの仕事は、渡されるデータ/保存されたデータがある場合にそうすることができるように、あなたのアプリケーションアーキテクチャを設計することです。これがユーザーのデフォルト設定である場合は、ユーザーのデフォルトを使用します。つまり、永続的に保存するものです。それが渡されるデータだけの場合は、それを参照することができるオブジェクトのインスタンスプロパティに格納します。ページビューコントローラ自体、またはそれがある場合はその親であるか、またはアプリケーションデリゲートであるか、または... – matt

答えて

1

どのようにデータを保存するかによって異なります。アプリケーションがデバイスから削除されたとしても、データがユーザーの存続期間を持続させるようにするには、データベース(Realm、CoreDataなど)など、クライアントから離れた場所に保存する必要があります。あなた自身が、ユーザーの経験を形作るために引き続き使用するデータそのものをアプリケーションに持たせたい場合は、UserDefaultsを使うことができますが、それはあなたのやりたいことのようには見えません。また、データをアプリのそのインスタンスの存続期間だけ持続させたい場合は、それを通常のプロパティに格納します。

私は何らかの理由で3番目のオプションを選択すると思われます。もしそうなら、私は親ビューコントローラ(すべてのページビューコントローラが参照できることを)...

class SurveyAnswers { 

    var userName: String? 
    var userAge: Int? 
    var favoriteSauce: PizzaSauce? 
    var livesWithCats: Bool? 

} 

のインスタンスプロパティとしてのモデルオブジェクトを作成示唆...と単にプロトコル/デリゲートパターンを使用しますオブジェクトの同じインスタンスを更新している限り、そのオブジェクトのプロパティを更新する子から親にデータを渡します。次に、PDFファイルを準備する準備が整ったら、そのオブジェクトが子ビューコントローラによって設定されているオブジェクトを親に尋ねてください。

これで問題ない場合は、このデータを保存して取得する方法として共有AppDelegateを使用できます。私はこれを習慣化することに注意するだけですが、アプリケーション全体に応じて、これは完全に受け入れられる選択肢かもしれません。

一般的なルール:データを転送する宛先オブジェクトのプロパティを設定し、デリゲートを使用してデータを後方に渡します。

関連する問題