Titanium Mobileでtsvファイルから初期データを入れる。
Titanium SDK:3.2.0
Alloy:1.3.0
tsvファイルから初期データ読み取って、テーブルに入れる方法を考えた。
■ tsvファイル
1行目 | column1 | column2 | column3 |
2行目 | aaa | AAA | 111 |
3行目 | bbb | BBB | 222 |
4行目 | ccc | CCC | 333 |
5行目 | ddd | DDD | 444 |
/** * tsvファイルからインスタンスを作成し、データ作成。 * 1行目はテーブルのカラム名を記述。 * 2行目以降は1行目の同列のカラムのデータを記述。 * @param {Object} filePath tsvファイルまでのpath * @param {Object} modelName モデル名 */ function insertInititalData(filePath, modelName) { var fileData = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, filePath); var fileContents = fileData.read().toString(); var fileLines = fileContents.split(/\r\n|\r|\n/); // カラムを取得 var tableColumns = fileLines[0].split('\t'); // 2行目以降のデータでインスタンス化 for (var i = 1; i < fileLines.length; i++) { var modelLineWords = fileLines[i].split('\t'); var params = _.object(tableColumns, modelLineWords); var model = Alloy.createModel(modelName, params); model.save(); } }
ファイルの末尾に空行が入ってるとうまく動かないと思うので、
そこだけ除去してください。
上記の方法の利点はカラムが増えても、改修不要な点。
JavaScriptもさることながら、Underscore.jsがかなり使える。
Ruby on Rails 使ってる人はすぐに慣れるはず。