プロパティリスト


プロパティリストは、ファイルシステムに保存され、後で再構成できるオブジェクトの階層表現です。プロパティリストは、アプリケーションに少量のデータを保存するための軽量でポータブルな方法を与えます。それらは、オブジェクトで、それらは、実際にはそうですが、オブジェクトグラフの特定の種類から作られたデータの階層です。プロパティリストは、プログラムで容易に作成でき、永続的である表現でシリーズ化するのが容易です。アプリケーションは後でメモリに静的な表現を戻し、オブジェクトの元の階層を再作成することができます。ココアの Foundation と Core Foundation 両方ともプロパティリストのシリーズ化と非シリーズ化に関連する API があります。


プロパティリストの型とオブジェクト


プロパティリストは、特定の型のデータのみで構成されています:辞書、配列、文字列、数値(整数および浮動小数点数)、日付、バイナリデータ、およびブール値です。辞書と配列は、それらがコレクションなので、特殊な型です。それらは他の辞書や配列を含む1つ以上のデータ型を含みます。このオブジェクトの階層的な入れ子(ネスト)は、オブジェクトのグラフを作成します。以下のリストに示すように、抽象データ型は、対応する Foundation クラス、Core Foundation の型およびコレクションオブジェクトと値オブジェクトの XML 要素を持っています:



抽象型Foundation Framework のクラスCore Foundation 型XML 要素
ArrayNSArrayCFArrayRef<array>
DictionaryNSDictionaryCFDictionaryRef<dict>
StringNSStringCFStringRef<string>
DataNSDataCFDataRef<data>
DateNSDateCFDateRef<date>
IntegerNSNumber (intValue 32-bit)
NSNumber (integerValue 64-bit)
CFNumberRef (kCFNumberSInt32Type)
CFNumberRef (kCFNumberSInt64Type)
<integer>
Floating-point valueNSNumber (floatValue 32-bit)
NSNumber (doubleValue 64-bit)
CFNumberRef (kCFNumberFloat32Type)
CFNumberRef (kCFNumberFloat64Type)
<real>
BooleanNSNumber (boolValue)CFBooleanRef<true/> or <false/>
Foundation クラスの変更可能(Mutable)バージョンもサポートされています。

まとめると、これらのクラスのインスタンスは、プロパティリストオブジェクト として知られています。例えば、NSMutableDictionary オブジェクトは、プロパティリストオブジェクトであり、NSNumber オブジェクトであり、NSString オブジェクトです。プロパティリストが有効であるために、オブジェクトグラフ内のすべてのオブジェクトは、プロパティリストオブジェクトでなければなりません。


プロパティリストのベストプラクティス


XML とバイナリ形式の両方でプロパティリストを書くことができます。バイナリ形式は、XML のバージョンよりもコンパクトで、したがって、より効率的です。これは、ほとんどの場合に推奨されます。しかし、する必要がある場合は、手動で XML プロパティリストを編集できます。プロパティリストファイルには plist のファイル名拡張子があります。


オブジェクトが変化可変性の設定を持っているときは特に、オブジェクトの大規模、複雑なグラフを保存するために、プロパティリストを使用してはいけません。そして、モデルオブジェクトのようにアーキテクチャでサポートされていないオブジェクトを保存するためにはプロパティリストを使用できません。このような場合、代わりにアーカイブを使用して下さい。プロパティリストは NSData のオブジェクトを含められますが、大量のバイナリデータを保持するために、プロパティリストにデータオブジェクトを使用しないことをお勧めします。


プロパティリストのシリアル化


プロパティリストをシリアル化と非シリアル化するには、NSPropertyListSerialization クラスの適切なクラス・メソッドを呼び出すか、Core Foundation を使用している場合は、CFPropertyListRef の opaque タイプに関連した機能を使います。ココアでは、シリアル化された出力は NSData オブジェクトの形式です。そのため、ファイルシステムにそのデータを書き込むために、そのクラスのメソッド (例えば、writeToFile:atomically:) を使用でき、メモリにそれを読み戻すには NSData クラスのファクトリメモリーを使用できます。そして、それを非シリアル化するときは、プロパティリストの可変オプションを指定できます。


前提条件の記事


オブジェクトグラフ
コレクション

関連記事


オブジェクト・アーカイブ
オブジェクト可変性

決定済みの議論


プロパティリストプログラミングガイド

サンプルコードプロジェクト


people


情報プロパティリスト
プロパティリスト
バンドル
Nib ファイル












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ