如何使用谓词按字段执行查询?

时间:2015-07-08 23:38:46

标签: ios swift nspredicate cloudkit

我似乎无法弄清楚如何正确编写NSPredicate,它将过滤查询以按某个字段进行搜索。我正在尝试搜索标题为“Location”的字段,然后在该字段中搜索字符串,并查看字符串“CA”是否与用户字符串“currentState”(在这种情况下为CA,“currentState”)匹配只是在字符串中分配的用户位置(placemark.administrativeArea),然后只检索与这些过滤器匹配的记录。

enter image description here

这是我正在尝试使用的代码:

func retrieveStateMoods(latestStateMood:String) {


    // Create query
    let predicate:NSPredicate = NSPredicate(format: "Location", "\(self.currentState)%K") // CRASHES HERE!!
    let sort:NSSortDescriptor = NSSortDescriptor(key: "creationDate", ascending: false)
    let query:CKQuery = CKQuery(recordType: "State", predicate: predicate)
    query.sortDescriptors = [sort]

等...

当我尝试创建谓词时崩溃了。这是错误代码:

  

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无法解析格式字符串“Location”'   第一次抛出调用堆栈:

我知道我不是那么遥远,但我无法弄清楚如何正确格式化谓词。我尝试在开发人员参考中阅读NSPredicate示例,但它都是在objective-c。

1 个答案:

答案 0 :(得分:2)

这应该是:

NSPredicate(format: "Location == %@", self.currentState)