应用轻量级迁移后,将 ios-add 列添加到 sqlite?
Posted
技术标签:
【中文标题】应用轻量级迁移后,将 ios-add 列添加到 sqlite?【英文标题】:ios-add column to sqlite after apply lightweight migration? 【发布时间】:2016-08-18 08:51:45 【问题描述】:我正在开发一个使用 Core Data 和 SQLite 的应用程序。 SQLite 数据库用于检索数据。我用数据填充了 SQLite 数据库,然后我使用轻量级迁移为我的实体添加了一些新属性。
现在我已经使用 sqlitebrowser 更改了 SQLite 文件,并向其中添加了新列(对于已添加到数据模型中的新属性)并用一些数据填充列。但是当我获取数据时,这个新列什么也没显示。
我在运行项目时没有出现错误;但是我怎样才能改变 SQLite 文件呢?我必须手动更改 SQLite 文件吗?
我的应用程序在轻量级迁移之前完美运行。我的问题看起来像这样:link 但我正确地进行了轻量级迁移。我的应用程序,例如 Apple 示例代码的 iPhoneCoreDataRecipes。我在我的应用程序中使用预填充的 sqlite 数据库。如何更改 sqlite db?我知道每个实体是模型是表是sqlite db,每个属性是sqlite 中的表列?我手动将新列添加到 sqlite 文件(ZNOTE)并填充它。但是当我从 sqlite 获取时它什么也不显示。
【问题讨论】:
嗨,Mehdi - 您能否在您的问题中添加更多细节,说明它到底出了什么问题?例如,您如何尝试获取数据 - 以及您如何使用 sqlitebrowser 确认您已成功添加新列? 好的。感谢您在轻量级迁移之前帮助 Vince.my 应用程序完美运行。我的问题看起来像这样:***.com/questions/29918219/… 但我正确地进行了轻量级迁移。我的应用程序,例如 Apple 示例代码的 iPhoneCoreDataRecipes。我在我的应用程序中使用预填充的 sqlite 数据库。如何更改 sqlite db?我知道每个实体是模型是表是sqlite db,每个属性是sqlite 中的列?我手动将新列添加到 sqlite 文件(ZNOTE)。 嗨 Mehdi - 很高兴您有更多信息来澄清您的问题。但最好是编辑问题以包含新信息;这样,任何新读者都可以理解您的要求,而无需阅读下面的 cmets。 【参考方案1】:如果您使用的是 Core Data,您不能通过编辑 SQLite 文件来修改 SQLite 架构并期望它能够正常工作。您必须使用 Xcode 中的 Core Data 模型编辑器添加新属性。当应用程序运行时,Core Data 所知道的关于你的 SQLite 文件的一切都是模型文件告诉它的。如果您修改了架构但未修改模型文件,Core Data 将不会知道您的更改,并且可能会损坏您的数据或使应用程序崩溃。
Core Data 不是 SQLite 的包装器;它使用了一个非常不同的 API,而 SQLite 是一个你不应该关心的实现细节。
如果您不熟悉如何更改 Core Data 模型,请查看 Apple 的 Core Data Model Versioning and Data Migration。
【讨论】:
好的,汤姆。我明白了。但是我当前的 sqlite 文件会发生什么。我应该再次填充它。因为它包含许多表、1000 行、图像文件,并且......导出和导入不能完美地工作?以上是关于应用轻量级迁移后,将 ios-add 列添加到 sqlite?的主要内容,如果未能解决你的问题,请参考以下文章