核心数据混乱

时间:2012-02-12 22:47:41

标签: objective-c macos core-data

所以我是Core Data的新手,我读到的所有东西都说使用它 - 如果你使用SQLite,那么你就是邪恶的坏人。但我迷失在一些简单的事情上。我有一堆数据将用于设置NSCollectionView,这在SQLite中相对简单,但我不想成为邪恶的坏人。在某个地方有一个我缺少的简单教程吗?我很想看到基于SQL数据库的应用程序示例和核心数据相同的内容。

  • 这里的东西是SQL中的表结构,这里是核心数据中的等价物......
  • 这是SQL中的INSERT脚本,这里是核心数据中的等价物......
  • 这是带有JOIN和几个WHERE语句的SELECT,这里是核心数据中的等价物......

它甚至是我不理解的小事。

  • 如何提供预先填充的核心数据系统
  • 核心数据文件在哪里?像我的SQLite数据库一样在捆绑中?
  • 通过对应用程序的更新,如果核心数据文件位于我的捆绑包之外,我该如何更新它?

1 个答案:

答案 0 :(得分:0)

Justin808,

没有人是不使用CD的“邪恶的坏人”。如果您更喜欢使用SQLite,请选择它。它被许多应用程序使用。这是一个框架。如果SQLite是您习惯的技术,那么请使用SQLite。也就是说,CD是Apple鼓励在其平台上构建丰富,持久的模型应用程序的途径。它们不为纯SQL社区提供许多工具,但为CD应用程序提供了一组非常丰富的工具。我试图在这里回答技术问题:Core Data VS Sqlite or FMDB…?

关于您在同一个应用程序实现两种方式之间逐行比较的请求,这听起来像是一个很好的学习机会,您可以编写一个。 (我教的是初学iOS编程。你要求的应用程序可以很简单。你可以在一个周末编写这两个版本。我很乐意回顾你的工作并批评你的博客文章描述差异。你可以做一个在你的情况下尝试在这两种技术之间做出选择的其他人的出色贡献。)

您的问题:

  

这里的东西是SQL中的表结构,这里是   相当于核心数据...

模式描述不同,但基本相似。也就是说,可能无法调整SQL模式以供CD和/或UI应用程序使用,反之亦然。

  

这是SQL中的INSERT脚本,这里是核心数据中的等价物......

Apple和其他人有很多例子告诉你如何插入新实体。你有什么不明白的?

  

这是带有JOIN和一些WHERE语句的SELECT,这里是   相当于核心数据...

CD中的谓词语言与SQL不同。因此,您将以不同的方式查询事物。特别是,CD是组织数据的几乎“纯粹的”集合理论方法。您使用提取来为您的“查询”设定种子并设置操作以对其进行优化。除此之外,我需要引导您阅读有关CD及其谓词语言的众多书籍之一。

  

如何提供预先填充的核心数据系统

CD取决于与其他每个数据库系统一样的文件。您可以在捆绑包中提供它,并在需要变更时将其复制到文档目录(在iOS上)。

  

核心数据文件在哪里?像我的SQLite一样在捆绑中   数据库会吗?

是的,他们这样做。如果您使用带有SQLite后备存储的CD,那么它只是一个SQLite DB文件。 (如果允许CD在文件系统中存储大型BLOB,则会出现特殊问题。)

  

通过更新应用程序,我需要做些什么来更新核心数据   文件,如果他们住在我的包裹之外?

我不确定你在这里问的是什么?如果您在版本之间更新架构,就像使用SQLite一样,则需要将数据库迁移到新架构。 CD提供了一些非常适合添加剂迁移的工具。

祝你好运。

安德鲁