Titanium - 从以前版本的iOS App中检索SQLite数据

时间:2014-05-06 13:17:07

标签: ios sqlite titanium

我已被委托更新原生iOS应用程序,但由于我们还要将其发布到其他平台,我们正在使用Appcelerator的Titanium编写新版本。

当前的应用程序使用SQLite数据库来存储用户信息。 当用户将应用程序更新为新应用程序时,如何访问现有的SQLite数据库? 我们不想丢失任何数据。我假设我可以访问旧数据库,然后创建到新数据库的迁移。

测试这个的最佳方法是什么?我可以安装具有相同应用ID或捆绑ID的测试应用来模拟更新吗?

谢谢, 汤姆

1 个答案:

答案 0 :(得分:2)

只要先前的开发人员观察到Apple存储用户信息数据库的规则,这应该是可能的(虽然它可能会变得棘手)。

只要你拥有相同的软件包ID并增加版本,就可以在测试期间覆盖现有应用程序以模拟更新(确保使用Ad-hoc分发),这将保留用户文件地点。从那里,当您第一次加载您的应用程序时,以通常的方式加载该数据库:

// Set a property so you do this only one time when they first update
if(Ti.App.Properties.getBool('isDatabaseMigrated', false)) {
    // See if the DB file exists (this may be a fresh install not an update)
    var dbfile = Ti.Filesystem.getFile(Ti.Filesystem.applicationSupportDirectory+'/database', 'nameOfDB.sql');
    if(dbfile.exists()) {
        // Open the DB
        var db = Ti.Database.open('nameOfDB');
        .... Now do your thing ....
        db.close();
    }
    // Set flag so we only check this once
    Ti.App.Properties.setBool('isDatabaseMigrated', true);
}

iOS有一个保存数据库文件的特定目录,以及最新版本的Titanium migrates any old DB's to this directory