Нет NSSortDescriptor на distanceToLocation для CKQuery?

#cloudkit #ckquery

#cloudkit #ckquery

Вопрос:

С помощью CloudKit CKQuery вы можете фильтровать по расстоянию (см. Пример). Но как вы можете сортировать по расстоянию? Например, местоположение ASC. Дескриптор сортировки в местоположении возвращает ошибку: query.sortDescriptors = [NSSortDescriptor(key: "distanceToLocation", ascending: true)] :

   static func getNearbySpots(location : CLLocation, completionHandler: (spots : CKRecord[]) -> Void) {
        let predicate = NSPredicate(format: "distanceToLocation:fromLocation:(location, %@) < 10000", location)

        let queryOperation = CKQueryOperation(query: query)
        var results : CKRecord[] = []

        queryOperation.recordFetchedBlock = {
            results  = $0
        }

        queryOperation.queryCompletionBlock = {
            if $1 {
                NSLog($1.description,[])
                abort()
            } else {
                completionHandler(spots: results)
            }
        }

        self.publicDB().addOperation(queryOperation)
    }
  

Ответ №1:

Хорошо, нашел это. Существует CKLocationSortDescriptor, в котором вы можете указать местоположение.

  query.sortDescriptors = [CKLocationSortDescriptor(key: "location", relativeLocation: location)]