2016-12-30 10 views
0

私は画面上にfirebaseデータに基づいて画面上に配置されたビューを持っています。ビューが元々画面に植え付けられたとき、ビューは保存されたxとyをfirebaseから引き出し、それを使って画面上に配置します。userdefaultsに一時データを保存していますか?

ビューはドラッグ可能なので、ユーザーがビューをドラッグしてページを離れ、ビューが元のfirebaseデータから引っ張られるのではなく、一部のローカルに保存された新しいx/yから戻ってきたいときがあります。私がやっていたことは、firebaseのx/yをtouch endで更新していたのですが、これを一度にやっているたくさんのユーザーにとっては超実用的ではありません。

私はタッチのようなものをすることによって、これらのビューのいずれかで終了したときにuserdefaultsでのx/yを保存していたスーパーずさんなアイデア:

1)各ビューは、それに縛らfirebase UIDを持っているので、

2)タッチのボタンのX及びY位置は

3を終了つかむ)がキー名は、同様の文字列(UID +「のxCoord」)とYのための1つであると値を保存していることをつかみます下にある

4)私がx /そのUIDのXcoord + Ycoordにuserdefaultが設定されているかどうかを調べるためにチェックされるビューのy値。そうでない場合はfirebaseに移動します。

私のuserdefaultsをクリーンアップするために、私はUIDが存在するかどうかを確認することができました。私は再びロードします。もしそうでなければ、それらの座標をクリアすることができます。

これは邪魔な方法ですか?それを行うより良い方法はありますか?私はそれが疫病のようにそれを避けて、これはそれを必要としないほど簡単ですように私はむしろコアデータに入ることはないだろう。

これを改善する方法はありますか?

+0

これに対して、ユーザーのデフォルトが何をしているのかわかりません。なぜ変数を使用しないのですか?これがデータの保持のためのものです。 – matt

+0

ユーザーがアプリケーションを終了して戻ってくると、変数を使用するだけで、ユーザーがドラッグした場所に関係なく、ビューは元の位置に戻されます。私は、ユーザーがビューをドラッグした場所の情報を保存する必要があります。 – user6820041

+0

私はあなたの質問のどこにでもその考えを見ません。何か不足していますか? – matt

答えて

1

あなたは基本的に、macOSがウィンドウの場所をどのように保存するかについてかなり説明しました。その機能は「自動保存」と呼ばれています。これを置くにはユーザーのデフォルト設定が適しています。

2つではなく、ウィンドウのプロパティを1つだけマップします。ユーザーのデフォルトでCGPointNSValue(cgPoint:)で簡単に保存できます。おそらく、UIDを使用するのではなく、プロパティ名(たとえば、 "windowPosition:"など)に何か接頭辞を付けるのですが、多分それほど重要ではありません。また、すべてのウィンドウの場所を辞書を格納する単一のプロパティに格納することもできます。本当に、合理的に便利なものは何でも。これは、ユーザーのデフォルト設定が多かれ少なかれ、特にユーザーが直接対話できないiOSの場合はそうです。プログラムの立ち上げの間に小さなデータを保存することは、その全体的なポイントです。

+0

ありがとうございました!私の懸念を解消し、私にそれをするより良い方法を与えました。 – user6820041

関連する問題