2016-12-01 43 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,這將有所幫助。