【问题标题】:SUBQUERY in core data核心数据中的 SUBQUERY
【发布时间】:2011-10-16 22:23:31
【问题描述】:

我无法理解我的预测有什么问题。我有下一个数据库方案:

DataItem(color_ids) <->> (dataItem)Color

其中 Color 包含 colorID(int)。

我试图得到

all DataItems that contain colorID == 5.

我使用了下一个谓词:

SUBQUERY(color_ids, $sub, $sub.colorID==5).@count > 0

感谢您的帮助。

【问题讨论】:

  • 您显然在尝试使用像 SQL 这样的 Core Data。不要那样做。核心数据不是 SQL。实体不是表格。对象不是行。属性不是列。关系不是连接。 Core Data 是一个对象图管理系统,它可能会也可能不会持久化对象图,并且可能会或可能不会在幕后使用 SQL 来做到这一点。试图用 SQL 术语来思考 Core Data 会导致您完全误解 Core Data 并导致很多痛苦和浪费时间。
  • 那我们该怎么办。每个人的第一次体验是 sql(主要是 mysql),当我读到 coreData 是基于 sqlite 的时,我说好的,我已经处理了这个。但是你说我们不应该那样做(我可以说你是对的悲伤我已经)。那么我可以去哪里以正确的方式学习coreData?

标签: iphone objective-c ios core-data subquery


【解决方案1】:

您不需要SUBQUERY。事实上,你几乎从不需要SUBQUERY非常很难找到正确使用的情况。

您可以这样做:

[NSPredicate predicateWithFormat:@"ANY color_ids.colorID == 5"];

【讨论】:

  • 这很好用。你会如何更深一层?假设我们有 A > B > C。我们有多个 A 实体,C 实体有一个名为标签的属性。如何找到所有包含标签 == @"1234" 的 C 实体的 A 实体?
  • @zumzum 为此,您可能需要SUBQUERY,它类似于:SUBQUERY(aToBs, $b, ANY $b.bToCs.label = '1234').@count &gt; 0
  • 谢谢。我会解决这个问题,一旦我完成,我会告诉你进展如何。 SUBQUERIES 可以在 iOS 上使用吗?
  • 您可以将其作为您问题的答案并接受它,这是正确的方式
  • 差不多十年后,这仍然很有帮助,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 2018-01-08
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多