その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

csvファイルからplistを生成するPHPスクリプト

エクセルとかGoogle docsで編集されたデータをplistファイルとしてアプリに持たせたい、といった場合用の、csvファイルからplistファイルへの変換スクリプトです。


こちらに置いてあります。
https://github.com/shu223/csv2plist


たとえばこういうcsvファイルを読み込ませると、
(sample.csv)

id,name,age,birth
0,tsutsumi,32,5/26
1,sato,27,1/11
2,tanaka,21,11/3


こんな感じでplistファイルを出力します。
(sample.plist)

<?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">
<array>
	<dict>
		<key>id</key>
		<string>0</string>
		<key>name</key>
		<string>tsutsumi</string>
		<key>age</key>
		<string>32</string>
		<key>birth</key>
		<string>5/26</string>
	</dict>
	<dict>
		<key>id</key>
		<string>1</string>
		<key>name</key>
		<string>sato</string>
		<key>age</key>
		<string>27</string>
		<key>birth</key>
		<string>1/11</string>
	</dict>
	<dict>
		<key>id</key>
		<string>2</string>
		<key>name</key>
		<string>tanaka</string>
		<key>age</key>
		<string>21</string>
		<key>birth</key>
		<string>11/3</string>
	</dict>
</array>
</plist>

使い方

ターミナルから次のように実行します。

$ php csv2plist.php -t hoge.csv


CSVファイルにタイトル行がない場合は、-tのオプションなしで実行してください。

$ php csv2plist.php hoge.csv

補足

plistファイルは、こんな感じで initWithContentsOfFile: メソッドに渡してやるだけで NSArray や NSDictionary のオブジェクトとして取り扱えるようになります。

NSString *path = [[NSBundle bundleForClass:[self class]] pathForResource:@"hoge" ofType:@"plist"];
NSArray *arr = [[[NSArray alloc] initWithContentsOfFile:path] autorelease];
  • あまり変更のないデータはplistで
  • 変更があるけど項目が増えていかないデータ(設定値とか)はNSUserDefaultで
  • 変更があって数に増減のあるデータはDBで


っていう使い分けが定石かと思います。