2016-12-01 48 views
0

我有两个实体coredata从一个表和细节从另一个获取列表没有关系

第一个 -

{ 
      "ID": 5777, 
      "Name": "", 
      "EventID": 18341, 
      "ParentID": 19702, 
      "LastModifiedDate": "2016-11-30 09:36:04", 
      "EntityType": 3, 
      "InstanceID": 916787 
     } 

2D一个

{ 
      "ID": 19702, 
      "Name": "Google", 
      "EventID": 18341, 
      "ParentID": 0, 
      "LastModifiedDate": "2016-12-01 06:20:49", 
      "EntityType": 0, 
      "FileAttribute": "", 
      "InstanceID": 0, 
      "IsFile": false, 
      "ResourceURL": "http://www.google.com", 
      "Taxonomies": "0", 
      "ViewCount": 2 
     } 

现在需要从第二届一个与获取“ID”是使用核心数据的第一个“ParentID”。

MySql query will "SELECT * FROM "tbl_two" WHERE `ID` IN (SELECT `ParentID` FROM "tbl_ONE" WHERE `InstanceID` = '916787' AND `EventID` = '18341') 
+0

试图在没有关系的情况下在核心数据中做到这一点与尝试让工作比需要的更加困难是完全一样的。 –

+0

嗨,@汤姆哈灵顿。我是ios开发新手,很难深入了解核心数据。你能帮我怎么做吗..两张桌子有“资源”和“资源图”..“资源图”与用户有关 –

回答

0

的第一步是停止思考核心数据像它的SQL。它有一个不同的API,用SQL术语思考会导致你设计不佳。

用最普通的术语来说,不要考虑记录,考虑可能在应用中使用的对象以及这些对象如何相互关联。使用对象属性将一个对象与另一个对象相关联,而不是使用外键将一条记录与另一条记录相关联。

从我可以让你的SQL查询的,你想要的东西像

  • 两个核心数据的实体称为Resource(第一个样品)和ResourceMapping(你的第二个样品)。
  • Resource有一个属性叫mapping,类型为ResourceMapping
  • 使用关系而不是通过ID将一个人与另一个人联系起来。如果您需要将数据同步到远程服务器,您可以存储这些ID,但它们通常在核心数据中无用。

您的SQL查询的等效会是这样,我想:

  1. 使用可以匹配其属性的一个或多个NSPredicateResource(第一个例子)的单个实例。
  2. 当你有这个实例时,要求它的关系值为mapping(或其他任何你称之为的),并且你会从另一个实体获得相关对象。

除此之外,苹果提供extensive, detailed documentation with code samples,这将有所帮助。