Mam zestaw obiektów encji w mojej bazie danych Core iOS, które opisują coś w lokalizacji. Nazwijmy obiekt Lokalizacja. Wdrożyłem to poprzez posiadanie dwóch atrybutów w lokalizacji, które odnoszą się do lokalizacji - szerokości i długości geograficznej, zarówno dwójkowych. Istnieją inne elementy, takie jak imię.Lokalizacje w danych podstawowych posortowane według odległości za pomocą NSFetchedResultsController?
Używam NSFetchedResultsController do wiązania elementów do UITableViewController. Chciałbym, aby wyniki były sortowane według odległości do danego CLLocationCoordinate2D. W naprawdę idealnym scenariuszu mogę odświeżyć tę listę, aby przeliczyć sortowanie na podstawie nowej lokalizacji. W związku z tym ten rodzaj zależy od dwóch kluczy i trzeciej "statycznej" zmiennej (takiej, która nie różni się w zależności od pozycji w kolekcji).
Myślę, że mógłbym dowiedzieć się, jak to zrobić, jeśli sortowałem dowolną listę z NSSortDescriptors. Nie kontroluję jednak, w jaki sposób deskryptory sortowania używane są w NSFetchedResultsController.
Czy istnieje sposób, aby skonfigurować moje jednostki, mój NSFetchedResultsController, moje NSSortDescriptors itp., Aby to osiągnąć? Podejrzewam, że odpowiedź nie polega na stworzeniu fantazyjnego NSSortDescriptor, lecz na utworzeniu przejściowego atrybutu w jednostce, która reprezentuje odległość do mnie i okresowej rekalkulacji tego atrybutu. Jednak jestem wystarczająco nowy w Core Data, że nie jestem pewien, jak najlepiej to zrobić (powtórzenie wszystkich obiektów i ponowne obliczenie pola). Nie jestem również pewien, czy NSSortDescriptors będzie działać na atrybutach Transient.
Niestety, pobrany kontroler wyników nie może sortować atrybutów przejściowych lub właściwości obliczonych. Zobacz http://stackoverflow.com/questions/13292582/nspredicate-with-function-not-working lub http://stackoverflow.com/questions/12027769/nssortdescriptor-sort-by-location dla podobnych zagadnień i odniesień do dokumentacja. –
Dziękujemy! Widziałem to i dlatego pomyślałem, że odpowiedź może polegać na obliczaniu wartości w moich jednostkach podstawowych danych. Zdejmijmy Transient z tabeli - jeśli to nie jest pole przejściowe, w jaki sposób chciałbym okresowo aktualizować zestaw encji? –
Czy naprawdę potrzebujesz kontrolera pobranych wyników? Jeśli pobierzesz obiekty do tablicy, możesz posortować ją w pamięci i użyć jako źródła danych dla widoku tabeli. –