【问题标题】:How do I update my database on my iPhone app?如何在我的 iPhone 应用程序上更新我的数据库?
【发布时间】:2016-01-25 03:12:46
【问题描述】:

我有一个从 sqlite 数据库读取的应用程序。我最近更新了数据库并想包含新的,所以我删除了旧的(选择“移动到垃圾箱”)并用新的替换它。数据似乎仍然反映了旧版本。我再次删除了数据库,认为当查找它的代码运行时应该会触发错误:

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

但应用程序仍然运行良好(全部在我的模拟器上)。它是否隐藏在我需要从中删除引用的地方?这对我的用户来说会是个问题吗?它是只读的。

编辑:

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

【问题讨论】:

  • 从设备中删除应用并进行干净的构建。

标签: ios swift


【解决方案1】:

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

或其他使用数据库迁移系统的解决方案:

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

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

【讨论】:

  • 对于如此简单的事情来说,这似乎是一笔巨大的开销。只是重命名我的新数据库并更新我的代码以反映我的错误吗?
  • 您可以更新代码,但使用旧版本的用户可能无法更新应用程序。如果他们会下载新的应用程序版本 - 那可能会奏效。但这并不是因为数据更改而强制用户更新应用程序的最佳解决方案。如果在某些更改(“例如添加新模式或某些功能”)时添加了新内容,则应该进行强制更新。您需要记住,我们的用户真的很懒惰,他们做得越少,应用程序就越好。所以你应该自己决定。您还可以为 Core Data 的使用重写代码并使用他们的迁移 - 它应该比直接使用 SQLite 更容易。
  • 同样重命名数据库会在设备上创建新的存储,但旧的也会出现在那里。至于我,这样做是错误的方法,因为您没有更改数据库而只是创建新数据库,旧数据库将占用与以前相同的存储量,因为这确实不好。
  • 我完全迷失了......我对 Objective C 的了解还不够,无法让其中任何一个工作
  • 我不明白我的项目从哪里获取数据,因为我已经完全删除了数据库
猜你喜欢
  • 2012-02-12
  • 2016-01-20
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
相关资源
最近更新 更多