哪里不使用核心数据?是不是可以将核心数据用作 MySql 之类的数据库?

Posted

技术标签:

【中文标题】哪里不使用核心数据?是不是可以将核心数据用作 MySql 之类的数据库?【英文标题】:Where not to use core data? Is it possible to use core data as a database like MySql?哪里不使用核心数据?是否可以将核心数据用作 MySql 之类的数据库? 【发布时间】:2015-09-08 18:58:16 【问题描述】:

如果我们知道在哪里使用和在哪里不应该使用,核心数据是简单、高效且令人兴奋的。

我一直在玩 Core data。

我想知道哪些地方不能使用核心数据

问题很简单,比方说,我想把核心数据当作一个真正的“数据库”,就像 mysql 一样。

拥有主键、搜索、排序(一列或多列)等。

就我而言,我无法做到。

在任何地方我都找不到关于“havePredicate”的有用文档或帮助。

选择使用核心数据代替数据库是否是潜在的责任? 或者 如果可能的话,是否有一个特定的“核心数据模型”可以完成或至少可以完成大部分工作......(有不同的限制)?

【问题讨论】:

Core Data 是高度优化的工具的精美创作,它巧妙地打包到一个 Objective-C 框架中,以帮助我们管理持久存储(持久存储的一个例子是数据库)。它本身不是数据库。它通常被正式称为对象图。 Core Data 的使用取决于许多因素,例如您想要存储什么类型的数据以及您需要多久访问一次? 【参考方案1】:

Core Data 提供了一些类似数据库的功能,但其 API 与使用原始 SQL 语句不同。例如,Core Data 实体大致等同于 SQL 表,但它对关系的处理与 SQL 的工作方式大不相同。这是否是“潜在责任”取决于您需要在应用程序中完成什么。 Core Data 被设计成一个允许直接读写模型对象的系统,虽然它有一些类似于 SQL 的特性,但从 SQL 的角度思考是一个很好的解决办法。

拥有主键、搜索、排序(一列或多列)等。

就我而言,我无法做到。

Core Data 使用自己的唯一 ID 系统作为主键。 NSManagedObject 的每个实例都有一个名为 objectID 的属性,它是唯一的。您可以添加自己的主键字段,但确保唯一性取决于您。这通常不是必需的,但同样取决于您需要完成的工作。通过NSPredicateNSSortDescriptor 内置搜索和排序。如果您发现这很难或不可能,最好发布一个新问题,详细说明您尝试了什么以及它如何未能满足您的需求。

在任何地方我都找不到关于“havePredicate”的有用文档或帮助。

它通过NSPredicate 与 SQL 中的用途相同。语法不同,因此您可能需要咨询 Apple 的 Predicate Programming Guide 以了解其工作原理。举个简单的例子,SQL 片段HAVING SUM(SaleAmount) > 1000 可以用@sum(saleAmount) > 1000) 之类的东西来实现。

【讨论】:

以上是关于哪里不使用核心数据?是不是可以将核心数据用作 MySql 之类的数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何从核心数据中获取父实体的所有子实体,以及如何将父数据用作 UITableview

使用核心数据生成的类作为模型对象......?

在哪里保存核心数据上下文...?

iPhone RestKit 是不是可以将核心数据对象图转换为 JSON?

XCode4 - 在哪里寻找由核心数据创建的 sqlite 文件

核心数据迁移是不是必要?