[ Siena 目次 ]
SaveData / LoadData のサンプル
コレクションの
SaveData と
LoadData を実行するサンプルを試作します。
Export / Import のサンプル と同じようなことを実践し、相違点を確認します。
実際の画面を確認
とりあえず、名前や性別のデータをコレクションに登録しました。
真ん中のギャラリーで、 Members というコレクションのデータを表示しています。
左上の SaveData ボタンをタッチ(クリック)して、コレクション内のデータを保存します。
画面上、何も変わっていないようですが、実際にはデータが保存されているようです。
あまりにも画面に変化がなかったので、右側に枠線付きで Saved というメッセージを出力しました。
ここで Clear ボタンをタッチ(クリック)して、コレクション内のメンバーを削除します。
コレクション内のメンバーが削除されました。
今度は、左上の LoadData ボタンをタッチ(クリック)して、コレクション内にデータを読み込みます。
さきほどコレクションに登録されていたデータが復活しました。
以下に、作成時のポイントを記述します。
[ 目次 ]
- 実際の画面を確認
- 事前準備
- 仕様確認
- 仕組みの解説
- Export / Import との相違点
- SaveData の保管場所
事前準備
画像も動画も使用しないので、準備は不要です。
仕様確認
SaveData ボタンを押すと、コレクション内のデータを出力します。
LoadData ボタンを押すと、
SaveData で出力したデータをコレクションに読み込みます。
仕組みの解説
ここでは、貼り付けた部品の属性を
ExpressView で確認します。
部品を選んで右下の
ExpressView ボタンをクリックすれば、画面右に開きます。
以下、画像をクリックすると拡大画面が表示されます。
- SaveData ボタン
-
コレクション Members のデータを保存します。
OnSelect 属性で、 SaveData(Members,"SaveLoadSample");
と指定している部分がそれです。 "SaveLoadSample" がファイル名です。
-
動作していることがわかるように、念のため出力メッセージを編集しています。
OnSelect 属性で、 UpdateContext({Situation:"Saved"})
と指定している部分がそれです。
Export の時は専用の貼り付け要素がありましたが、今回は単なるボタン要素を使っています。
- LoadData ボタン
-
SaveData 処理で保存したデータを、コレクション Members に読み込みます。
OnSelect 属性で、 Collect(Members,LoadData("SaveLoadSample"));
と指定している部分がそれです。
-
動作していることがわかるように、念のため出力メッセージを編集しています。
OnSelect 属性で、 UpdateContext({Situation:"Loaded"})
と指定している部分がそれです。
SaveData ボタンと同様、こちらも単なるボタン要素です。
- Clear ボタン
-
コレクションの中身をクリアします。
OnSelect 属性で、 Clear(Members);
と指定している部分がそれです。
-
動作していることがわかるように、念のため出力メッセージを編集しています。
OnSelect 属性で、 UpdateContext({Situation:"Cleared"})
と指定している部分がそれです。
今回は説明の便宜上、コレクション内の全データクリアとデータ読み込みを分けています。
ただ、実用的なアプリを作成する際には、
検索・照会画面のサンプルなどのように、
Clear 処理と
Collect 処理を一組で考える方がいいかなあ、と思っています。
Export / Import との相違点
Export / Import 機能との最大の相違点は、
入出力ファイル名をアプリ内にコーディングするか否か、ではないかと思います。
Export / Import の時は、ファイルの保管場所やファイル名をその時々で変えられましたが、こちらはそれができません。
そういう側面を考慮すると、
SaveData / LoadData 機能は、そのアプリ固有の設定を保存したり読み込んだりする用途が相応しいように思えてきます。
入出力の汎用性を重視するときは
Export / Import 、コレクションを一個だけ保存して継続利用すればいい、というようなときは
SaveData / LoadData 、というところでしょうか。
このあたりの選択は、作成したいアプリの性質による、というところでしょう。
わたしは
パラパラ漫画リーダーを作る際、
SaveData / LoadData 機能の詳細を知らなかったこともあり、特に考えもせず
Export / Import 機能を使いましたが、結果としてそれは妥当な選択になっていた、と思っています。
SaveData の保管場所
ネット検索したところ、
SaveData / LoadData 機能で参照されるフォルダは、
-
Publish 前の場合
C:\Users\(ユーザー名)\AppData\Local\Packages
\Microsoft.MicrosoftProjectSiena_(ランダムな文字列)\LocalState
→ 出力ファイル名は、(ランダムな文字列).(指定したファイル名)
-
Publish 後の場合
C:\Users\(ユーザー名)\AppData\Local\Packages\(Publish 時のアプリ名)\LocalState
→ 出力ファイル名は、(指定したファイル名)
とのことです。同じく
Project Siena を試している方のブログに、参照フォルダのことが書いてありました。
私が PC 環境に疎く、どこに保存されているのかさっぱりわからなかったので、大変助かった次第です。