0
我目前遇到了這個問題,如果有人能給我一些提示或最佳做法,那將是非常好的。鈦SDK版本:1.6.1 iPhone SDK版本:4.2JSON文件加載問題
我的應用程序將執行以下操作,它也越來越爲同步我的SQLite數據庫的遠程JSON文件,但應用程序是有這個錯誤在解析文件
[INFO] Due to memory conditions, 0 of 0 images were unloaded from cache.
使用較小的JSON文件時,一切正常,但現在該文件達到7MB,我的代碼退出了我。
這是因爲鈦JSON解析限制?由於動態內容,我無法爲數據庫提供應用程序安裝。所以這已經是一個排除的解決方案。
代碼:
function syncDatabase() {
if ((Titanium.Network.networkType != Titanium.Network.NETWORK_NONE)) {
Ti.API.info("There is network connection, trying to update database..");
var conn = Ti.Network.createHTTPClient();
conn.setTimeout(20000);
var lastUpdated = Ti.App.Properties.getInt("lastUpdated");
conn.open('GET', 'http://example.com/get/all/' + lastUpdated);
filename = "db";
conn.onload = function(){
try {
if (conn.status == 200)
{
var f = Ti.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory,filename);
f.write(this.responseData);
}
fillDatabase();
}
catch(e) {
}
};
conn.send();
}
}
function fillDatabase()
{
try {
var file = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory + "/db");
var json = JSON.parse(file.read().text);
var db = Titanium.Database.open('db');
for(i=0; i < json.length; i++){
Ti.API.info("Found foobar: With id ["+json[i].id+"] ["+json[i].foo+"]");
var syncid = json[i].id;
var foo = json[i].foo;
var bar = json[i].bar;
db.execute('REPLACE INTO objects (id,foo,bar) VALUES (?,?,?)',syncid,foo,bar);
}
Ti.App.Properties.setInt('lastUpdated', Math.floor(new Date().getTime()/1000));
db.close();
}
catch(e) {
Ti.API.info("THERE IS AN ERROR UPDATING THE DATABASE");
}
}
任何幫助表示讚賞。
嗨!對不起,我花了一段時間回覆我是在一個爲期兩週的假期。對於「動態內容」,我的意思是數據庫中的內容經常更改,因此必須下載或同步數據庫以獲取最新的正確數據。所以這就是爲什麼我提到我無法安裝數據庫的原因。 在進一步的發展中,我看到我可以減少我的JSON文件到1,5MB而不是7MB,我的應用程序可以同時我的數據庫,因爲這一點,但我仍然希望看到這個問題,以防萬一我必須擴大我的JSON文件。 – 2011-04-27 06:51:48