ios - 哪里不能使用核心数据?是否可以像MySql那样把核心数据当做数据库使用?

标签 ios core-data sqlite

如果我们知道在何处使用和在何处不,核心数据将简单、高效且令人兴奋。

我玩核心数据有一段时间了。

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

问题很简单,比方说,我想将核心数据用作真正的“数据库”,如 MySql。

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

据我所知,我无法实现它。

对于“havingPredicate”,我找不到任何有用的文档或帮助。

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

最佳答案

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

Have primary key, search, sort (with one or more columns) etc..

As far as I tried I couldn't achieve it.

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

There is no useful documentation or help anywhere I can find for "havingPredicate".

它与 SQL 中通过 NSPredicate 实现的目的相同。语法不同,因此您可能需要查阅 Apple 的 Predicate Programming Guide看看它是如何工作的。举个简单的例子,SQL 片段 HAVING SUM(SaleAmount) > 1000 可以用 @sum(saleAmount) > 1000) 来实现。

关于ios - 哪里不能使用核心数据?是否可以像MySql那样把核心数据当做数据库使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32465294/

相关文章:

iphone - SQLite数据库-无法看到更新

iOS Swift - 如何在应用程序中检测系统警报

ios - ipa 大小不同而项目相同

ios - ScrollView 内的表格 View : expand table view on scrolling and hide view above it

ios - 在核心数据中单独存储日期值

ios - 由于 PrivateQueueConcurrencyType 导致 CoreData 内存泄漏

iphone - 将SQLite客户端数据库与MySQL服务器数据库同步

ios - 具有自签名 SSL 和 HTTP 基本身份验证的 AFHTTPRequestOperation(-1012 错误)

iphone - CoreData 为所有对象和键注册全局观察者

c# - 通过 System.Data.SQLite 和 c# 对单个 SQLite 数据库文件进行多次访问