2013-06-21 11 views
2

如何在覈心數據(iOS開發)中創建此SQLite查詢?核心數據(Objective-C,iPhone,Xcode)中選擇不同的值(2或更多)

SELECT DISTINCT VALUE_1, VALUE_2 FROM TABLE; 

它應該返回不同的值(朵,三人),例如,從該表中:

(123, 234, Car) 
(123, 456, Bus) 
(234, 456, Train) 
(123, 456, Eletric Bus) 
(234, 456, Subway) 

它應該返回3行,因爲(123, 234)是唯一的,因此(234, 456)(123, 456)和。

(123, 234, Car) 
(234, 456, Train) or (234, 456, Subway) 
(123, 456, Eletric Bus) or (123, 456, Bus) 

有了這個代碼,我可以DISTINCT只有一個值:

NSDictionary *entityProperties = [entity propertiesByName]; 
[request setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"VALUE_1"]]]; 
[request setReturnsDistinctResults:YES]; 
[request setResultType:NSDictionaryResultType]; 

回答

0

您可以指定更多的是一個獨特的屬性來獲取:

[request setPropertiesToFetch:@[@"VALUE_1", @"VALUE_2"]]; 
[request setReturnsDistinctResults:YES]; 
[request setResultType:NSDictionaryResultType]; 

(請注意,你可以給一個列表的屬性名稱而不是屬性 的描述。)

這應該返回字典的陣列是這樣的:

 
[ 
    { "VALUE_1" = 123; "VALUE_2" = 234}, 
    { "VALUE_1" = 234; "VALUE_2" = 456}, 
    { "VALUE_1" = 123; "VALUE_2" = 456}, 
] 

然而,沒有辦法(即我知道的),以使另外的獲取請求 從一個「隨機選擇」對象返回第三屬性。

+0

使用2個屬性的列表很好用!但正如你所說,我必須提出另一個要求獲得第三個價值的要求。它很爛!非常感謝你! – Fabio

+0

@Fabio:另一個可能的解決方案*可以*設置[請求setPropertiesToGroupBy:@ [@「VALUE_1」,@「VALUE_2」]]''而不是'setPropertiesToFetch'。您將獲得所有對象,但按值1/value_2分組,以便您可以選取第一個或任何對象。但我不是100%肯定的,目前無法測試。 –

+0

嗨馬丁,我嘗試setPropertiesToGroupBy但我無法做到!無論如何,感謝您的幫助! – Fabio