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

Posted

技术标签:

【中文标题】如何在 Swift 中使用“IN”谓词进行 ckQuery?【英文标题】:How to use "IN" predicate in Swift for doing ckQuery? 【发布时间】:2015-06-06 13:05:03 【问题描述】:

我需要快速从我的应用程序中进行查询。我用的是cloudKit,所以不能用SQL语言。

我想写一个类似的指令:

SELECT * 
FROM parola
WHERE IDParola IN ("1","4","5","10"); //And so on with numbers

我已经读过,我必须使用 NSPredicate,所以我写:

var predicate = NSPredicate(format: "IDParola IN  "1", "2" ")
let query = CKQuery(recordType: "Parola", predicate: predicate)

但是这段代码给了我错误:“由于未捕获的异常'CKException'而终止应用程序,原因:'意外表达式:IDParola IN 1, 2' *** 首先抛出调用栈..."

我读了这个页面: https://developer.apple.com/library/prerelease/ios/documentation/CloudKit/Reference/CKQuery_class/index.html ,我试过没有“,我尝试了各种方式(我认为),但它不起作用。它只有在我写的时候才有效:

var predicate = NSPredicate(format: "IDParola = 1")
let query = CKQuery(recordType: "Parola", predicate: predicate)

但是使用这段代码我只能检索一条记录...谁能帮助我?先谢谢了!!

【问题讨论】:

【参考方案1】:

你可以试试这个:

var predicate = NSPredicate(format: "IDParola IN %@", [1, 2]) 
let query = CKQuery(recordType: "Parola", predicate: predicate)

【讨论】:

它有效!谢谢!!太完美了! 别担心,我很高兴听到它解决了您的问题! :)

以上是关于如何在 Swift 中使用“IN”谓词进行 ckQuery?的主要内容,如果未能解决你的问题,请参考以下文章

CoreData:使用 IN 基于谓词/数组进行排序

Swift:如何创建具有 Int 值的谓词?

在 SWIFT 的谓词中使用“timeIntervalSinceNow”

Swift coreData - 格式化日期并在谓词中使用它

Swift / Cloudkit 谓词格式

JPA 条件 API:如何使用 IN 关键字并查询另一个谓词的结果?