Q11:Lesson7複合コンポーネントとして実行している内容は分かるのですが、テキストフィールドとファイルの動きがどうも分かり難いです。
Q11-1:
現在応用編のLesson7を理解しようとしています。チュートリアルに書かれている内容はOKなのですが、例によって複合コンポーネントの内部の処理で躓きました。
複合コンポーネントとして実行している内容は分かるのですが、テキストフィールドとファイルの動きがどうも分かり難いです。
テキストフィールドって何のために存在しているのでしょうか?<質問@>
コンポーネントキーに「カレントディレクトリ」って付けているだけで入力等何もしていないのにファイルコンポーネントでテキストを取得し、ファンクションコンポーネントに対して設定しています。(メソッドの「ファイル名を設定する」というのはファンクションに対して設定しているという理解で合っているでしょうか?)<質問A>
A11-1:
> テキストフィールドって何のために存在しているのでしょうか?<質問@>
カレントディレクトリ(現在のフォルダ)を示す文字列「.」をアプリケーションデータとして保存するために存在しています。
先日のご質問にありました「住所録」複合コンポーネントで、テーブルに住所録のデータを記述して保存していたのを思い出していただけるとご理解しやすいかと存じます。「住所録」複合コンポーネントではテーブルデータを保存するためにテーブルコンポーネントを使っており、ここの「フォルダ管理」複合コンポーネントではテキストデータを保存するためにテキストフィールドコンポーネントを使用しているということです。
なお、テキストデータを保存するためには、テキストフィールドコンポーネントを使用しなければならないということはありません。テキストデータを保存できるコンポーネントであれば、ラベルコンポーネントでもテキストエリアコンポーネントでも同じ目的で利用することができます。
さらにいえば、ファイルコンポーネントの「ファイル名を設定する(String)」メソッドの引数は、
取得方法: メソッド戻り値
コンポーネント: テキストフィールド[ID:3-1]
メソッド/値: テキストを取得する
となっていますが、この複合コンポーネントの処理では(テキストフィールドの保持している文字列が「.」のまま変更されないので)、これを以下のように変更しても同じ動作を行います。
取得方法: 固定値
コンポーネント:
メソッド/値: .
このように変更した場合、テキストフィールドは不要となります。
> コンポーネントキーに「カレントディレクトリ」って付けているだけで入力等何もしていないのにファイルコンポーネントでテキストを取得し、ファンクションコンポーネントに対して設定しています。(メソッドの「ファイル名を設定する」というのはファンクションに対して設定しているという理解で合っているでしょうか?)<質問A>
ファンクションに対しては何の設定も行っていません。ファイルコンポーネントの「ファイル名を設定する(String)」メソッドは、ファイルコンポーネントに対する設定を行うものです。
ファイルコンポーネントは指定されたファイルやフォルダに関する情報の取得や、名前の変更、削除などの操作を行うために用いるコンポーネントです。
「ファイル名を設定する(String)」メソッドは、その操作対象となるファイルやフォルダを指定するためのメソッドです。ここでは、引数に「.」を与えることで、現在のフォルダを操作対象としています。
その下に接続されたメソッド「配下に存在する全コンテンツのツリーを取得[PFObjectTree]()」を実行することによって現在のフォルダ以下のフォルダとファイルのツリーを取得し、ファンクションコンポーネントはそのツリーを戻り値として返します。