プロパティリスト(Property List)は永續化(シリアライズ)の爲の手段である。Windows ユーザでも iTunes ライブラリを展開したものは、ここを覗く人なら居るかも知れない。嚴密にはプログラミング言語ではないが、Cocoa ではあまりにも重要なので扱ふことにする。

目次

プログラミング言語/Objective-C

永續化對稱クラス

以上の物とそのサブクラスが對稱となる。以外はプロパティリストとして保存できない。またコレクションクラス(配列と辭書)の場合は格納するオブジェクトもこの基準に沿はねばならない。

NeXTstep形式プロパティリスト(OPENSTEP、ASCII形式)

この形式の利點は人がみて讀みやすい所にある。ただし、古い形式であるため NSDate は NSStringとの區別がつかなくなる。

クラス記法備考
NSStringstring"string"値が英數字及び「_」のみの時はダブルクオート無し。一部エスケープされる
NSNumberYES(bool)1----
NSNumberNO(bool)0----
NSNumber20(int)20----
NSNumber2.0(float)2.0----
NSDate@referencetime"YYYY-MM-DD HH:mm:ss ±XXXX"ISO に基づくが、これは恐らく description の値
NSData0xAD238FE8321.....<10101101 00100011 0011.....>バイナリは二進數に變換され、8bit=1byte ごとに半角スペースが入る
NSArray[obj,obj,.....,obj](<obj>, <obj>, ...., <obj>)<obj>の記法は各々のクラス依存
NSDictionary[key=>obj,key=>obj]{<key>=<obj>; <key>=<obj>; }<obj>の記法は各々のクラス依存で、<key>はNSStringに同じ

NSString のエスケープ

Unicode のバイナリ値がそのまま出力される。やうは UTF-16 で出力する。「あ」は2ビットコードであり「U+3042」である。これは「\U3042」と出力される。改行コードは LF は「\n」に置換されるが、CR はそのままである。タブは「\t」に変換され、ダブルクオートもまた「\"」となる。バックスラッシュは重ねることになる。嚴密には、2ビット以上のUnicodeであるとバイナリ値へエスケープされるらしい。

文字エスケープ備考
aa値が英數字及び「_」のみの時はダブルクオートが無く、また左記に同じ。ASCIIの他は次のやうになる
\U3042Unicode は U+3042
タブ\t----
改行(LF)\n----
改行・復歸(CR)(そのまま)----
ダブルクオート(")\"----
バックスラッシュ(\)\\----

コレクションの改行

コレクションはその文字數を一列に並べた時に78バイトを超過すれば、アイテムごとに改行することになる。

{
    "Application Version" = "8.0.1"; 
    Features = 5; 
    "Library Persistent ID" = XXXXXXXXXXXXXXXX; 
    "Major Version" = 1; 
    "Minor Version" = 1; 
    "Music Folder" = "/Users/XXX/Music/iTunes/iTunes%20Music/"; 
    Playlists = (
        {
        ..... 
        },
    .......
    );
}

セミコロン(;)及びコロン(,)は必ず半角スペースを一つ後置する。これはダブルクオートで括らない場合への對處。コレクションの要素がこれらで區切られぬ場合、パーサはエラーを發する。なほ NSArray の最後の項目にはコロンが無いのが標準だが、うつかり附けてもきつちり認識される。

コメント

コメントは次の三つの形式を許可する。

お馴染みであらう。前者二項は改行、後者一項は「/*」で始まり「*/」で終はるまでがコメントと看做される。

strings の爲の擴張

strings は Localized.strings などで使用される UTF-16 でエンコーディングされた書類である。これのためにパーサは NSDictionary がルートである時に限り、ルート要素の NSDictionary には鍵括弧を必要としない。

よつて先程示した ASCII の plist は次のやうでも同樣に解釋されることになる。

"Application Version" = "8.0.1"; 
Features = 5; 
"Library Persistent ID" = XXXXXXXXXXXXXXXX; 
"Major Version" = 1; 
"Minor Version" = 1; 
"Music Folder" = "/Users/XXX/Music/iTunes/iTunes%20Music/"; 
Playlists = (
    {
    ..... 
    }, /* これは註釋 */
.......
); # これも註釋
// これもさうである

Localized.strings では普通使はないけれど、他の NSArray などのコレクションをこれは要素として持つ事ができる。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS