プロパティリストを作成して NSDictionary に取り込む - Objective-C プログラミング

PROGRAM


プロパティリストを NSDictionary として取り込む

Mac の開発環境 Xcode では、"プロパティリスト" ファイルを用意しておいて、それを必要時に NSDictionary 型の変数に取り込むことができるようになっています。

これを使えば、例えば iPhone アプリの開発などで、あらかじめローカライズされた各国対応のプロパティリストファイルを用意しておけば、実行時にそれをアプリ内で NSDictionary として読み込むことで、キー値から各国の事情に対応した情報に置き換えるといったことも可能です。

 

プロパティリストファイルを作成する

プロパティリストは、拡張子が一般に ".plist" となっているファイルで、Xcode で作成・編集することが出来るようになっていますが、内容自体は XML 形式のテキストファイルですので、ルールに乗っ取って作成すれば、別のソフトからでも作成することができます。

形式としては、DOCTYPE を "plist" として、例えば キー値から文字列を取る一般的な NSDictionary 用のプロパティリストファイルの場合、次のような形でファイルを用意する感じになります。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>キー1</key>

<string>値1</string>

<key>キー2</key>

<string>値2</string>

</dict>

</plist>

これを UTF-8 形式で保存したら、Xcode のプロジェクトに追加して、プロパティリストの準備は完了です。

なお、ここでは <string> タグを使用して値を文字列で設定していますが、次のような形で、いくつかの指定方法があるようです。

文字列 <string>文字列</string>
整数値 <integer>100</integer>
実数値 <real>1.0000e+00</real>
真偽値 <true/>
<false/>
配列

<array>

<string>文字列1</string>

<string>文字列2</string>

</array>

これらの要素を <key> とセットで使用して、プロパティリストの内容を作成して行きます。

 

NSDictionary に取り込む

プロパティリストの内容を NSDictionary 変数に取り込むには、次のようにします。

NSDictionary* data;

 

NSBundle* bundle;

NSString* file;

 

bundle = [NSBundle mainBundle];

file = [bundle pathForResource:@"FINENAME" ofType:@"plist"];

 

if (file)

{

data = [NSDictionary dictionaryWithContentsOfFile:file];

}

else

{

data = nil;

}

おおよそこのような形で、data 変数にプロパティリストファイル "FILENAME.plist" で設定した内容が NSDictionary 型として取り込むことが出来ました。

なお、NSDictionary 形式として取り込まれたプロパティリストは、文字列型は NSString 型で受ければ問題なく読み込むことができました。数値型は NSNumber 型で取得されるため、int のような普通の数値として扱うためには CFNumber 型の値を NSInteger 型で取得する で記したような方法で値を取得する感じになります。

[ もどる ]