JSON文件加载问题



我目前有这个问题,如果有人能给我一些指点或最佳实践,那将是伟大的。Titanium SDK版本:1.6.1 iPhone SDK版本:4.2

我的应用程序做以下事情,它正在获得一个远程JSON文件来同步我的SQLite数据库,但应用程序在解析文件

时出现此错误
[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");
    }
}

我不知道你说的

是什么意思

动态内容

?通常情况下,它也应该与你的数据库兼容

相关内容

  • 没有找到相关文章

最新更新