プロパティ(特性)リスト


プロパティリストは、ファイルシステムに格納され、後で再構成できるオブジェクトの階層の表現です。プロパティリストは、アプリに、少量のデータを格納するための軽量でポータブルな方法を与えます。それらは、オブジェクトの特定の型から作ったデータの階層であり、これらは、実際には、オブジェクトグラフです。プロパティリストは、プログラム的に作成が容易であり、永続的な表現にシリアル化するのはさらに簡単です。アプリは、メモリに保存された静的な表現を後で読み、オブジェクトのオリジナルのの階層を再作成できます。ココア・ファウンデーションと Core Foundation の両方ともがプロパティリストのシリアル化と逆シリアル化に関連する API を持っています。


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


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



抽象型Foundation フレームワークのクラスCore Foundation のタイプXML の要素
配列NSArrayCFArrayRef<array>
辞書NSDictionaryCFDictionaryRef<dict>
文字列NSStringCFStringRef<string>
データNSDataCFDataRef<data>
日付NSDateCFDateRef<date>
整数NSNumber(intValue 32ビット)
NSNumber(integerValue 64ビット)
CFNumberRef(kCFNumberSInt32Type)
CFNumberRef(kCFNumberSInt64Type)
<integer>
浮動小数点値NSNumber(floatValue 32ビット)
NSNumber(doubleValue 64ビット)
CFNumberRef(kCFNumberFloat32Type)
CFNumberRef(kCFNumberFloat64Type)
<real>
ブール値NSNumber(boolValue)CFBooleanRef<true/> または<false/>
ファウンデーション·クラスの変更可能なバージョンもサポートされています。


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


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


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


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


プロパティリストのシリアライズ


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


前提条件の記事

オブジェクトグラフ

コレクション(Collection)


関連記事

アーカイブ

オブジェクト可変性(mutability)


既出の議論

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


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

People






次の章
前の章
目次
Xcode の新機能

インターフェースビルダー ヘルプ
NSObject(class)
概要(NSObject,class)

  • アクセシビリティ
  • VoiceOver での作業
  • アクセサメソッド
  • 命名規則
  • アプリ ID
  • 明示的なアプリ ID は、一つのアプリに一致
    ワイルドカードアプリ ID は複数のアプリに一致
    アプリコード署名
  • ブロックオブジェクト
  • ブロックの宣言
    ブロックの作成
    変更可能なブロックの変数
    ブロックを使用する
    比較演算
  • バンドル
  • バンドルの構造と内容 バンドルリソースへのアクセス
    ロード可能なバンドル
  • カテゴリ
  • 宣言
    実装
  • クラスクラスタ
  • 利点
    検討事項
  • クラスの定義
  • インターフェース
    実装(Implementation)
  • クラスメソッド
  • サブクラス
    インスタンス変数
    self
  • ココア(タッチ)、Cocoa(Touch)
  • フレームワーク(Framework)
    言語
    コーディング規則
  • コレクション(Collection)
  • コレクションクラス
    順序付けスキーム
  • コントローラーオブジェクト
  • コントローラの調整
    ビューコントローラ
    仲介コントローラ(OS X)
    宣言されたプロパティ
  • デリゲート(Delegate)
  • デリゲートとココアフレームワーク
    デリゲートと通知
    データソース
    動的バインディング
  • 動的型付け
  • isa ポインタ
  • 列挙
  • NSEnumerator
    高速列挙
  • 例外処理
  • 例外の種類
    コンパイラディレクティブを使用した例外処理
    信号伝達のエラー
    フレームワーク
    情報プロパティリスト
  • 初期化
  • イニシャライザ宣言の型
    初期化子を実装
    国際化
  • 内観(イントロスペクション)
  • イントロスペクション情報の種類
  • キー値コーディング
  • オブジェクトのプロパティと KVC
    クラスを KVC に準拠させる
  • キー値監視
  • KVO の実装
    KVO はバインディングの不可欠な部分(OS X)
  • メモリ管理
  • メモリ管理の規則
    メモリ管理の側面
    メッセージ
    メソッドのオーバーライド
  • モデルオブジェクト
  • うまく設計されたモデルクラス
  • モデル・ビュー・コントローラ
  • モデルオブジェクト
    ビュー・オブジェクト
    コントローラオブジェクト
  • 複数のイニシャライザ
  • 指定イニシャライザ
    Nib ファイル
  • 通知
  • 通知オブジェクト
    通知を観察する
    通知を投稿
  • アーカイブ
  • 鍵付き連続アーカイバ
    鍵付きアーカイブの作成とデコード
  • オブジェクトの比較
  • 比較ロジックを実装する
  • オブジェクトのコピー
  • オブジェクトコピーのための要件
    メモリ管理への影響
  • オブジェクト作成
  • オブジェクト作成式の形式
    メモリ管理への影響
    ファクトリメソッド
  • オブジェクトの暗号化
  • オブジェクトの暗号化と復号化する方法
    キー付き対連続的アーカイブ
    オブジェクトグラフ
    オブジェクトのライフサイクル
    オブジェクトモデリング
  • オブジェクト可変性(mutability)
  • 可変オブジェクトを受け取る
    可変オブジェクトを格納
    オブジェクトの所有権
    Objective-C
  • プロパティ(特性)リスト
  • プロパティリストの型とオブジェクト
    プロパティリストのベストプラクティス
    プロパティリストのシリアライズ
  • プロトコル
  • 公式、非公式なプロトコル
    正式なプロトコルを採用、準拠
    独自のプロトコルを作成
    ルートクラス
  • セレクタ
  • セレクタの取得
    セレクタの使用
    シングルトン
  • 統一された型の ID
  • UTI は逆ドメイン·ネーム·システム規則を使用
    統一された型 ID は適合階層で宣言
    OS X のアプリは、アプリバンドルでそれらを定義して新しい UTIを追加
  • 値オブジェクト
  • NSValue