2016-01-23 62 views
0

我有一个从sqlite数据库读取的应用程序。我最近更新了数据库并希望包含新的数据库,因此我删除了旧数据库(选择“移至废纸篓”),并将其替换为新数据库。数据似乎仍然反映了旧版本。我再次删除数据库,思维应该触发错误时的代码来关注一下吧RAN:如何更新我的iPhone应用程序上的数据库?

let path = NSBundle.mainBundle().pathForResource("members", ofType:"sqlite3")

,但应用程序仍运行正常(全部在我的模拟器)。它隐藏在我需要删除参考的地方吗?这会对我的用户造成问题吗?它的结尾是只读的。

编辑:

的模式并没有改变,这只是一些新的或更新的数据。我迷路了。

+0

从设备上删除应用程序并进行干净的构建。 – rmaddy

回答

2

所以,要解决这个问题,你需要从设备上删除你的应用程序,比数据库也会被删除。之后,执行完整的项目清理并再次运行应用程序,它应该工作正常。但是,如果我理解正确 - 有时您会更改数据库,并希望用户也看到此更改。 为了这个目的,我会建议使用Parse服务:它使用简单,也是免费的。所有需要的信息,你可以在这里找到http://parse.com/

或其它溶液使用数据库迁移系统:

1)关于迁移问题:Best practices for in-app database migration for Sqlite

2)库,方便管理的迁移:https://github.com/layerhq/FMDBMigrationManager 希望它可以帮助你。

+0

对于这么简单的事情来说,这看起来太多了。重新命名我的新数据库并更新我的代码以反映我会错吗? – thumbtackthief

+0

您可以更新代码,但使用旧版本的用户可能不会更新应用程序。如果他们将下载新的应用程序版本 - 这可能工作。但这并不是强制用户更新应用程序的最佳解决方案,因为数据已更改。如果真的发生了一些变化(例如“添加新模式或某些功能”),如果添加了新内容,则应强制更新。你需要记住,我们的用户真的很懒,他们做的更好的应用程序越少。所以你应该自己决定。您也可以重写核心数据使用的代码并使用他们的迁移 - 它应该比直接使用SQLite更容易。 – Volodymyr

+0

重命名数据库将在设备上创建新的存储,但旧的存储也会出现在那里。至于我这样做是错误的,因为你不是在改变数据库,而是在创建新的数据库,旧的数据库将采用与以前相同的存储量,因为这并不是真的。 – Volodymyr

相关问题