2012-02-12 79 views
1

所以我是新来的核心数据,一切我读到说使用它 - 如果你使用SQLite你是一个邪恶的坏人。但我迷失在一些简单的事情上。我有一个将被用来建立一个NSCollectionView数据一堆,这将是SQLite的比较简单,但我并不想成为一个邪恶的坏人。有一个简单的教程,我失踪了吗?我很想看到一个例子SQL数据库应用基础与核心数据同样的事情。核心数据混乱

  • 喜欢的东西在这里是SQL表结构,这里是核心数据相当于...
  • 这里是SQL INSERT一个脚本,这里是核心数据相当于...
  • 这里是一个JOIN和几个WHERE语句的SELECT,这里是核心数据中的等价物...

它甚至是我不明白的小事情。

  • 我如何提供预填充的核心数据系统
  • 哪里核心数据文件住在哪里?在像我的SQLite数据库捆绑?
  • 有了一个更新的应用程序我有什么做的,如果他们住我的包外,更新核心数据文件吗?
+2

关于“邪恶的坏人”位,这意味着,如果你想直接使用SQLite,不要尝试使用CoreData作为一个前端到SQLite的。 SQLite在CoreData内部使用的事实是一个实现细节,并试图直接与它交互会产生意想不到的后果。 (我曾经在使用CoreData进行存储的大型Cocoa应用程序上工作。) – bneely 2012-02-12 23:00:07

+1

@bneely - 我读到我不应该使用SQLite,即使没有核心数据,我也应该只在新应用程序中使用核心数据。另一方面,我正在阅读我应该使用SQL脚本预先填充后端核心数据数据库,因为您可以在脚本构建阶段运行它以预先填充核心数据后端。所以我很困惑。我宁愿不使用SQL,但我迷失在如何处理核心数据中的小问题。 – Justin808 2012-02-12 23:12:27

+0

您可以预先以编程方式填充数据。这也允许您切换底层数据存储,而不会影响您的应用程序。这里有一个很好的教程:http://www.raywenderlich.com/934/core-data-tutorial-getting-started – Soliah 2012-02-13 00:20:37

回答

0

Justin808,

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

关于您的要求,对实现两种方式相同的应用程序之间的线比较的线,这听起来像一个极好的学习机会,让你写一个。 (我教你开始iOS编程,你要求的应用程序可以非常简单,你可以在一个周末写两个版本,我很乐意回顾你的工作,并批评你的博客文章描述不同之处。在您的情况其他人尝试这两种技术之间做出选择的杰出贡献)

您的问题:

喜欢的东西在这里是SQL表结构,这里是 相当于核心数据.. 。

模式描述不同目前却基本相似。也就是说,SQL架构可能不会被调整为供CD和/或UI应用程序使用,反之亦然。

这里是SQL INSERT一个脚本,这里是核心数据的等效...

有大量的苹果和其他的例子告诉您如何插入新的实体。你不明白的是什么?

这里是一个选择带有JOIN和几个WHERE语句,这里是 相当于核心数据...

在CD谓词语言比SQL不同。因此,您将以不同方式查询事情。特别是,CD是一种几乎“纯粹”的组织数据的理论方法。您使用提取为种子“查询”并设置操作来优化它。除此之外,我需要指导您阅读关于CD及其谓词语言的许多书籍之一。

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

CD取决于像其他数据库系统中的文件。您可以在捆绑软件中提供它,并在需要对其进行变异时将其复制到文档目录(iOS上)。

核心数据文件在哪里存在?在像我的SQLite 数据库的捆绑?

是的,他们这样做。如果您将CD与SQLite后备存储一起使用,那么它只是一个SQLite数据库文件。 (有一个特殊的问题,如果你允许CD到大的BLOB存储在文件系统)。

有了一个更新的应用程序我有什么做的,如果他们住在外面来更新核心数据 文件我束?

我不确定你在问什么?如果您在版本之间更新模式,就像使用SQLite一样,您需要将数据库迁移到新模式。 CD提供了一些适用于附加迁移的工具。

祝你好运与您的选择。

安德鲁