2011-08-04 50 views
3

我有這樣的說法,即時通訊試圖弄清楚如何在覈心數據中使用。轉換用於核心數據的sql語句

SELECT 
(3963.0 * acos(sin(".$StartLat."/57.2958) * sin(latitude/57.2958) + cos(".$StartLat."/57.2958) * cos(latitude/57.2958) * cos(longitude/57.2958 - ".$StartLon."/57.2958))) as distance 
FROM locations 
ORDER BY distance 
LIMIT 0, 10 

即時猜測這是我需要修改的部分:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Title" ascending:NO]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 

[fetchRequest setSortDescriptors:sortDescriptors]; 

在此先感謝。

回答

3

簡單的回答:你不能。

真實答案:您還不知道Core Data是什麼。

核心數據不是數據庫。它不是SQL。它不是任何形式或形式的關係數據庫。

核心數據是抽象對象從其內存中表示的持久性的框架。它是一個對象管理框架。你通過對象與它進行交互。你不會創建查詢。你不執行SQL。您請求對象。全面爆發,NSObject子類。請致電Core Data Programming Guide

(對不起,如果這件事出現嚴酷,但這是一個普遍誤解的事情,它是完全明確的)

+0

感謝澄清。我最終爲我的項目使用了sqlite。 – user648753

+1

這是一個奇怪的評論。核心數據通常由SQLite支持,是的。類似地,Hibernate是一個ORM抽象層,如果你想象你可以使用它,只是忘記了底層的SQL,你最終會遇到麻煩。像這樣http://stackoverflow.com/questions/97197/what-is-the-n1-selects-problem –

+0

ORM在Dot net框架中提供了使用普通的sql查詢模型的方法too.now iOS 9也被引入。 ..有什麼辦法,我們可以使用普通的sql對象...無論如何,如果核心數據的背景是sqlite ..它的權利期望核心數據將允許正確的! – Manju