Swift / Cloudkit 谓词格式

Posted

技术标签:

【中文标题】Swift / Cloudkit 谓词格式【英文标题】:Swift / Cloudkit predicate format 【发布时间】:2015-02-23 14:21:35 【问题描述】:

我正在尝试使用存储在 CloudKit 数据库中的坐标来编写谓词。我正在努力寻找有关格式化它的任何准确文档。这是我想出的:

NSPredicate(format: "distanceToLocation:fromLocation: (%K,%@) < 1000", "locationcoordinates")

我收到以下错误:

由于未捕获的异常“CKException”而终止应用程序,原因:“距离到位置的预期 CLLocation 参数:fromLocation:”

谁能帮我纠正这个谓词?我不确定我需要添加什么参数。

【问题讨论】:

【参考方案1】:

在您的谓词中,您有 2 个参数。 %K 和 %@ 但只提供 1 个值。

应该是这样的

    var location:CLLocation = CLLocation(latitude: 0, longitude: 0)
    var radiusInKilometers:CGFloat = 1000;
    var predicate: NSPredicate = NSPredicate(format: "distanceToLocation:fromLocation:(location, %@) < %f", location, radiusInKilometers)!

【讨论】:

所以我很快就把它放在一起let location:CLLocation! NSPredicate(format: "distanceToLocation:fromLocation: (%K,%@) &lt; 1000", "locationcoordinates", location) 现在位置一直返回为零。 我用坐标为 0,0 的 CLLocation 更新了答案。您必须为此输入自己的坐标。 (取决于您要搜索的位置)

以上是关于Swift / Cloudkit 谓词格式的主要内容,如果未能解决你的问题,请参考以下文章

在 SWIFT 的谓词中使用“timeIntervalSinceNow”

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

CloudKit 谓词

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

在 CloudKit 中使用比较谓词进行查询

在 CloudKit 谓词中使用包含比较数组的 CONTAINS 或 ANY