【发布时间】:2012-02-12 22:47:40
【问题描述】:
所以我是 Core Data 的新手,我读到的所有内容都说要使用它 - 如果你使用 SQLite,你就是一个邪恶的坏人。但我迷失在一些简单的事情上。我有一堆数据将用于设置NSCollectionView,这在 SQLite 中相对简单,但我不想成为一个邪恶的坏人。我缺少一个简单的教程吗?我很想看到一个基于 SQL 数据库的示例应用程序以及与核心数据相同的东西。
- 这里是 SQL 中的表结构,这里是核心数据中的等价物...
- 这是 SQL 中的 INSERT 脚本,这是核心数据中的等效脚本...
- 这是一个带有 JOIN 和几个 WHERE 语句的 SELECT,这是核心数据中的等价物...
连小事都看不懂。
- 如何提供预填充的核心数据系统
- 核心数据文件存放在哪里?像我的 SQLite 数据库一样在捆绑包中?
- 更新应用程序后,如果核心数据文件位于我的捆绑包之外,我需要做什么来更新它们?
【问题讨论】:
-
关于“邪恶的坏人”位,这意味着如果您想直接使用 SQLite,请不要尝试使用 CoreData 作为 SQLite 的前端。在 CoreData 内部使用 SQLite 的事实是一个实现细节,尝试直接与其交互可能会产生意想不到的后果。 (我曾经开发过一个使用 CoreData 进行存储的大型 Cocoa 应用程序。)
-
@bneely - 我读到我根本不应该使用 SQLite,即使没有核心数据,我也应该只在新应用程序中使用核心数据。另一方面,我正在阅读我应该使用 SQL 脚本来预填充后端核心数据数据库,因为您可以在脚本构建阶段运行它来预填充核心数据后端。所以我很困惑。我宁愿根本不使用 SQL,但我什至不知道如何做核心数据中的小事。
-
您可以通过编程方式预先填充数据。这也允许您在不影响您的应用程序的情况下切换底层数据存储。这是一个很好的教程:raywenderlich.com/934/core-data-tutorial-getting-started
-
如果适合您的目的,直接使用 SQLite 绝对没有问题。这是一个真实的例子:inessential.com/2010/02/26/on_switching_away_from_core_data 就我个人而言,当我不再考虑数据库并开始考虑我需要在我的应用程序中持久化的对象时,我发现 Core Data 更容易理解。我知道这听起来无济于事,但我什至没有想过当我使用 Core Data 时底层数据库会是什么样子(嗯,也许有点)。
标签: objective-c macos core-data