Во-первых, осознайте, что Core Data - это прежде всего иерархия объектов. Поэтому вы не запрашиваете столбцы, вы запрашиваете объекты.
При этом вы захотите построить NSFetchRequest
с NSPredicate
, и предикат будет выглядеть примерно так:
[NSPredicate predicate withFormat:@"latitude > %@ AND latitude < %@ AND
longitude > %@ and longitude < %@", someFloatObject1, someFloatObject2,
someFloatObject3, someFloatObject4];
Вы также можете добавить сортировку к NSFetchRequest
, хотя вы не можете выполнять вычисления внутри сортировки. Поэтому вы можете выполнить сортировку после извлечения объектов.
обновление
Вы можете иметь временное свойство для ваших объектов, а затем иметь метод, который говорит что-то вроде '-updateDistanceCalFrom: someFloat`. Затем с массивом объектов вы можете сделать следующее:
NSArray *myFetchedArray = ...
[myFetchedArray makeObjectsPerformSelector:@(updateDistanceCalcFrom:)
withObject:someFloatObject];
NSSortDescriptor *calcSort = ...;
NSArray *descriptors = [NSArray arrayWithObject:calcSort];
[calcSort release], calcSort = nil;
NSArray *sortedArray = [myFetchedArray sortedArrayUsingDescriptors:descriptors];