Проблема загрузки файла JSON - PullRequest
0 голосов
/ 08 апреля 2011

Я сейчас занимаюсь этим вопросом, было бы замечательно, если бы кто-нибудь дал мне несколько советов или передовой опыт.Версия 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, но теперь размер файла достигает 7 МБ, и мой код перестает работать на мне.

Это из-за ограничения синтаксического анализа титана 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");
    }
}

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 11 апреля 2011

Я понятия не имею, но что вы имеете в виду под

динамическим контентом

?обычно это должно работать и с вашей базой данных

...