- 追加された行はこの色です。
- 削除された行はこの色です。
プロパティリスト(Property List)は永續化(シリアライズ)の爲の手段である。Windows ユーザでも iTunes ライブラリを展開したものは、ここを覗く人なら居るかも知れない。嚴密にはプログラミング言語ではないが、Cocoa ではあまりにも重要なので扱ふことにする。
*目次 [#n7a36dc7]
#contents
[[プログラミング言語/Objective-C]]
*永續化對稱クラス [#d1fee6bd]
-NSString
-NSNumber(シリアライザは int か float か bool かを區別する)
-NSDate
-NSData
-NSArray
-NSDictionary
以上の物とそのサブクラスが對稱となる。以外はプロパティリストとして保存できない。またコレクションクラス(配列と辭書)の場合は格納するオブジェクトもこの基準に沿はねばならない。
*NeXTstep形式プロパティリスト(OPENSTEP、ASCII形式) [#naf8ff10]
この形式の利點は人がみて讀みやすい所にある。ただし、古い形式であるため NSDate は NSStringとの區別がつかなくなる。
|クラス|値|記法|備考|h
|NSString|string|"string"|値が英數字及び「_」のみの時はダブルクオート無し。一部エスケープされる|
|NSNumber|YES(bool)|1|----|
|NSNumber|NO(bool)|0|----|
|NSNumber|20(int)|20|----|
|NSNumber|2.0(float)|2.0|----|
|NSDate|@referencetime|"YYYY-MM-DD HH:mm:ss ±XXXX"|ISO に基づくが、これは恐らく description の値|
|NSData|0xAD238FE8321.....|<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 のエスケープ [#e96d156b]
Unicode のバイナリ値がそのまま出力される。やうは UTF-16 で出力する。「あ」は2ビットコードであり「U+3042」である。これは「\U3042」と出力される。改行コードは LF は「\n」に置換されるが、CR はそのままである。タブは「\t」に変換され、ダブルクオートもまた「\"」となる。バックスラッシュは重ねることになる。嚴密には、2ビット以上のUnicodeであるとバイナリ値へエスケープされるらしい。
|文字|エスケープ|備考|h
|a|a|値が英數字及び「_」のみの時はダブルクオートが無く、また左記に同じ。ASCIIの他は次のやうになる|
|あ|\U3042|Unicode は U+3042|
|タブ|\t|----|
|改行(LF)|\n|----|
|改行・復歸(CR)|(そのまま)|----|
|ダブルクオート(")|\"|----|
|バックスラッシュ(\)|\\|----|
** コレクションの改行 [#rb2f8855]
コレクションはその文字數を一列に並べた時に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 の最後の項目にはコロンが無いのが標準だが、うつかり附けてもきつちり認識される。
** コメント [#gb9fcd51]
コメントは次の三つの形式を許可する。
-//
-#
-/* */
お馴染みであらう。前者二項は改行、後者一項は「/*」で始まり「*/」で終はるまでがコメントと看做される。
** strings の爲の擴張 [#j89064cb]
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 などのコレクションをこれは要素として持つ事ができる。