1

我在Cloudkit中有一些CKRecords,记录有两个int类型的属性,可能称为'cost'和'price',我想查询'cost'>'price'的记录,但是当我写一个时应用程序崩溃了像这样查询:

CKQuery *query = [[CKQuery alloc] initWithRecordType:@"MyRecordType" predicate:
[NSPredicate predicateWithFormat:@"cost > price"]];

这是 Xcode 给出的崩溃信息:

由于未捕获的异常'CKException'而终止应用程序,原因:'无效的谓词,无效的右表达式,不是函数表达式

请帮助,提前谢谢。

4

1 回答 1

1

好的,

对此多想了一些。

您查询所有记录,但只选择两个字段;成本和价格。

let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Whatever", predicate: predicate)
let operation = CKQueryOperation(query: query)
operation.desiredKeys = ["cost","price"]

然后你做你的查询[应该更快],整理出你想要的记录,然后用 publicDB.fetchRecordWithID 去获取它们。

是的,我知道不止一个查询,实际上它看起来更多,但是等等,我认为 Cloudkit 中的 WWDC 2015 Tips & Tricks 中有答案;观看会议,您也可能会在其中找到一些东西。如果您有记录 ID,这里是获取记录的代码。

publicDB.fetchRecordWithID(), completionHandler: {record, error in
if error != nil {
    println("there was an error \(error)")
} else {
    NSOperationQueue.mainQueue().addOperationWithBlock {
        self.plasticOne.text = (record.objectForKey("subCategory") as String)
    }

} })

抱歉,如果不自己编写代码,我不能给你更多,如果我这样做,你最终会使用我的答案,我相信你的答案会更好:)

于 2017-06-04T17:50:12.913 回答