CKQuery 的 distanceToLocation 上没有 NSSortDescriptor?

Posted

技术标签:

【中文标题】CKQuery 的 distanceToLocation 上没有 NSSortDescriptor?【英文标题】:No NSSortDescriptor on distanceToLocation for CKQuery? 【发布时间】:2014-06-23 07:00:05 【问题描述】:

使用 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)]

【讨论】:

以上是关于CKQuery 的 distanceToLocation 上没有 NSSortDescriptor?的主要内容,如果未能解决你的问题,请参考以下文章

按键值过滤 CKQuery

带有今天日期的 CKQuery

CKQuery 的 distanceToLocation 上没有 NSSortDescriptor?

我可以从 CloudKit 接收对应于 CKQuery 的记录计数吗?

如何在 Swift 中使用“IN”谓词进行 ckQuery?

CloudKit 谓词:使用 CKQuery 的谓词搜索多个参考字段