Locais em Core Data classificados por distância via NSFetchedResultsController?
Eu tenho um conjunto de objetos de entidade no meu banco de dados de Core de iOS que descrevem algo em um local. Vamos chamar a entidade Location. Eu implementei isso tendo dois atributos no Local que se referem ao local - latitude e longitude, ambos duplos. Existem outros elementos, como nome.
Eu estou usando um NSFetchedResultsController para vincular as entidades a um UITableViewController. O que eu gostaria de fazer é ter os resultados classificados por distância para um determinado CLLocationCoordinate2D. Em um cenário realmente ideal, posso atualizar essa lista para recalcular o tipo com base em um novo local. Portanto, esse tipo dependeria de duas chaves e de uma terceira variável "estática" (uma que não varia entre os itens da coleção).
Eu acho que eu poderia descobrir como fazer isso se eu estivesse classificando uma lista arbitrária com NSSortDescriptors. No entanto, eu não controle como os descritores de classificação são usados em um NSFetchedResultsController.
Existe uma maneira que eu poderia configurar minhas entidades, meu NSFetchedResultsController, meus NSSortDescriptors, etc. para conseguir isso? Eu suspeito que a resposta não está em criar um NSSortDescriptor sofisticado, mas em criar um atributo transitório na entidade que representa a distância para mim e recalcular esse atributo periodicamente. No entanto, eu sou novo o suficiente para Core Data que eu não tenho certeza de como fazer isso melhor (iterar sobre todas as entidades e recalcular um campo). Eu também não tenho certeza se NSSortDescriptors funcionará em atributos transitórios.