2012-05-29 24 views
1

我正在使用核心數據檢索某些數據。我怎樣才能把這個SQL語句翻譯成核心數據?按核心數據劃分的多個組

SELECT bus, direction from BUSES where latitude > 58.00 and longitude < 34.00 group by bus, direction 

換句話說,我喜歡按BUS和DIRECTION分組,但有一個WHERE CLAUSE。

我已經使用這個代碼的嘗試:

request.propertiesToFetch = [NSArray arrayWithObjects:@"bus", @"direction", nil]; 
request.returnsDistinctResults = YES; 
request.resultType = NSDictionaryResultType; 

的事情是,如果我只檢索總線和方向,我不能設置一個NSPredicate隨緯度和經度這樣的:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(lat > 58) AND (lat < 34)"]; 
[fetchRequest setPredicate:predicate]; 

我猜Core Data只是檢索總線和方向,這就是爲什麼NSPredicate不起作用。

回答

1

核心數據不是SQL。事實上,它甚至不必爲其持久存儲使用SQLite。

我總是建議你想想你想在你已經在你的模型中定義的實體和關係來解決(而不是思考一下你會怎麼做在SQL)的問題。

我會建議獲取的對象你想使用一個正常的取得請求(不指定propertiesToFetch)與您的謂詞,然後自己將它們分組。

如果你只對一個屬性感興趣,你可以使用valueForKey:滿對象的陣列上,迅速得到只是那些值的數組。例如:

NSArray *busses = [objects valueForKey:@"bus"]; 
+0

和什麼如果我想通過使用兩個值獲取??? – Saad