将 CoreData 与捆绑的 SQLite 数据库一起使用?

Posted

技术标签:

【中文标题】将 CoreData 与捆绑的 SQLite 数据库一起使用?【英文标题】:Using CoreData along with a bundled SQLite database? 【发布时间】:2015-09-02 08:40:16 【问题描述】:

我是 ios 开发团队的新手,所以现在我遇到了一些问题。我想创建一个使用数据库向用户返回一些信息的应用程序。为此,我在项目中添加了一个 SQLite 数据库并使用了它 (https://github.com/stephencelis/SQLite.swift)。

现在我想向应用程序添加一个新功能,让用户可以添加一些书签来保存一些信息。为此,我需要更新数据库,这引起了我的一些主要担忧:如何在不覆盖用户书签的情况下更新应用程序?如果用户在第三次更新之前跳过了两次更新会发生什么?如您所见,这可能会变成巨大的痛苦。

所以我正在考虑将这个捆绑的 SQLite 数据库仅用作只读数据库,并与它一起使用 CoreData 来存储用户的书签。你怎么看?这是正确的方法吗?

【问题讨论】:

【参考方案1】:

如您所知,核心数据是与您的应用程序一起使用的持久数据。好吧,我仍然无法理解维护 SQLite 数据库的问题,但如果这是一个问题,那么我认为核心数据不会解决它。将核心数据与 SQLite 数据库一起明确地不改变数据库,而只是“记住”核心数据中的书签并从 SQLite 中获取它们可能会奏效。这是您面临的概念问题。

【讨论】:

我的主要问题在于更新应用程序。想象一下,我需要修改数据库中的某些内容。我对此没有任何经验,但此更新不会覆盖用户的本地数据库吗?如果是这样,这意味着他所有的书签都将被删除。 服务器端的应用程序数据库?\ 想更具体一点吗?我不太明白这个问题。 (对不起,我是初学者) 您的数据库是否仅用于手机的本地数据库。或者您的应用程序正在连接到服务器以获取数据并将其存储在本地? 我只为手机使用本地预填充数据库。我正在考虑使用 Parse.com,但我想让我的项目尽可能简单,以便专注于学习基础知识。【参考方案2】:

CoreData 是一个很棒的框架,但它不是微不足道的,它增加了您的项目可能不需要的复杂性。

如果书签不是很多数据,您可以将它们存储在 NSUserDefaults 中。

这个例子很有用: (http://ios-blog.co.uk/tutorials/quick-tips/storing-data-with-nsuserdefaults/)

【讨论】:

以上是关于将 CoreData 与捆绑的 SQLite 数据库一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

CoreData:从捆绑的数据库中迁移数据

Image Wells、Core Data 和 Sqlite 文件

如何将 SQLite 数据库捆绑并读入 Xcode 11.1?

是否可以为 Core Data 定制 SQLite 构建?

在 Coredata 中记录 sqlite 访问

xcode sqlite3 如何将数据库从捆绑包复制到文档文件夹?