2014-03-03 67 views
1

我有一個具有兩個核心數據實體的應用程序:核心數據組通過和搜索一對多關係的屬性

產品和屬性。

每個產品都有一組屬性,這是模型中的一對多關係。

我想要做的幾件事情:

  • 的產品有brand_id和品牌名稱。我想要獲得所有品牌名稱的列表,可能是將所有產品按其brand_id分組。

  • 然後我想要獲得與該品牌相關的所有產品的所有唯一鍵。因此,請選擇具有特定品牌標識的所有產品,然後選擇與任何產品關聯的所有屬性,然後按鍵分組。

  • 之後,我想要選擇一個特定的鍵值對進行搜索,並獲取與屬性匹配的鍵值對的所有產品。

這對核心數據甚至有可能嗎?我一直在尋找高低,但似乎這個問題比大多數人所要做的要複雜一點。

+0

爲什麼你沒有「品牌」實體? – Wain

+0

我同意@Wain,這聽起來更像是一個建模問題。您應該擁有與您的產品相關的品牌對象。核心數據是一個對象圖,而不是數據庫。用數據庫手套對待它會導致很難解決這樣的問題,反過來會導致代碼執行不良。 –

回答

0

對於前兩個問題,我建議創建另一個品牌實體並在您的模型中建立適當的關係。這一定會讓它變得更容易。

確保你有品牌到產品的反轉關係 - 它會自動爲您提供第2個問題的答案。

可以使用搜索核心數據不同的(唯一的)值:

[NSPredicate predicateWithFormat:@"(SUBQUERY(properties, $property, $property.key == %@ AND $property.value == %@)[email protected] > 0)", @"keySearch", @"valueSearch"]; 

[request setPropertiesToFetch:[NSArray arrayWithObject:@"distinctProperty"]]; 

對於發現有性能匹配的重點產品,值對,而獲取產品的實體,你應該使用這個NSPredicate