1
我有一個實體在CoreData MyObject
它有屬性latitude
和longitude
。NSSortDescriptor與比較使用實際的對象不是一個鍵值
我想用NSFetchedResultsController
執行提取,按MyObject
距離用戶當前位置的距離對提取進行排序。
但是,我不知道在排序描述符的Key
部分放什麼東西。
我不想比較對象的特定鍵。我想比較它們自己。
我不知道如何在沒有重新填充記錄距離字段的情況下執行此操作。
我想使用此代碼...
[[NSSortDescriptor alloc] initWithKey:@"." ascending:YES comparator:^NSComparisonResult(MyObject *object1, MyObject *opject2) {
// stuff here
}];
但它崩潰的應用程序由於內存壓力(笑)。
顯然使用@"."
是不正確的,但有沒有辦法做到這一點?
或者有沒有更好的方法使用不同的方法做到這一點?
是的,你的第二個解決方案可能是我要做的。將它們全部排序然後對它們進行排序的問題在於它打破了使用fetchedresults控制器的整個概念。 – Fogmeister
實際上它不是。原因是你必須可能每次計算距離,因爲當前位置可能會改變。所以你將不得不使用'executeFetchRequest'來獲取所有現有的(lat,long)對象。然後遍歷這些對象並填充distance屬性。然後創建一個抓取的結果控制器,並使用距離作爲排序描述符,並在FRC上調用'performFetch'來獲得排序結果的距離 –
啊,我想是的。我要麼更新到核心數據,我必須全部獲取它們或者將它們全部取出然後對它們進行排序。好的,很酷,謝謝 – Fogmeister