我在iOS Core Data數據庫中有一組實體對象,用於描述某個位置的某些內容。我們調用實體位置。我已經通過在位置上引用了兩個屬性來實現這一點,即位置 - 緯度和經度,兩者都是雙倍。還有其他元素,比如名字。核心數據中的位置通過NSFetchedResultsController按距離排序?
我正在使用NSFetchedResultsController將實體綁定到UITableViewController。我想要做的是將結果按照給定CLLocationCoordinate2D的距離排序。在一個非常理想的情況下,我可以刷新該列表以重新計算基於新位置的排序。因此,這種排序取決於兩個鍵和第三個「靜態」變量(不同於集合中的項目)。
我想我可以弄清楚如何使用NSSortDescriptors排序任意列表。但是,我不控制如何在NSFetchedResultsController中使用排序描述符。
有沒有一種方法可以配置我的實體,我的NSFetchedResultsController,我的NSSortDescriptors等來完成此操作?我懷疑答案不在於創建花哨的NSSortDescriptor,而是在代表距離的實體中創建瞬態屬性,並定期重新計算該屬性。然而,我已經足夠新的核心數據,我不知道如何做到這一點(迭代所有實體並重新計算字段)。我也不確定NSSortDescriptors是否可以處理Transient屬性。
不幸的是,獲取的結果控制器無法對瞬態屬性或計算屬性進行排序。請參閱http://stackoverflow.com/questions/13292582/nspredicate-with-function-not-working或http://stackoverflow.com/questions/12027769/nssortdescriptor-sort-by-location瞭解類似的問題和參考文檔。 –
謝謝!我看到了這一點,這就是爲什麼我認爲答案可能在計算我的核心數據實體中的值。讓我們從表格中獲取瞬態 - 如果它不是一個瞬態場,我將如何定期更新一組實體? –
你真的需要一個提取的結果控制器嗎?如果您將對象提取到數組中,則可以在內存中對該數組進行排序,並將其用作表視圖的數據源。 –