如何在CloudKit中通过creationDate进行查询?

Gom*_*ius 12 objective-c ios swift cloudkit

我想从CloudKit获取最后X分钟的公共/私人条目.

我尝试了这个效果,但失败了:

    let date = NSDate(timeInterval: -60.0 * 120, sinceDate: NSDate())
    let predicate = NSPredicate(format: "creationDate > %@", date)
Run Code Online (Sandbox Code Playgroud)

但这会得到我的数据,但我不确定我是在查询所有内容还是只是某种上限:

    let predicate = NSPredicate(value: true)
Run Code Online (Sandbox Code Playgroud)

我希望能够在一定的时间内查询.如果不在客户端进行创建排序逻辑,这可能吗?

这是完整的代码块:

func fetchPublicData(completion: ((records:[AnyObject]) -> Void)!)
{
    let date = NSDate(timeInterval: -60.0 * 120, sinceDate: NSDate())
    let predicate = NSPredicate(format: "creationDate > %@", date)
    let query = CKQuery(recordType: "MyDataRecordType", predicate: predicate)

    let container = CKContainer.defaultContainer()
    let publicDb = container.publicCloudDatabase

    publicDb.performQuery(query, inZoneWithID: nil,
    {
        (results, error) in

        if error != nil
        {
            self.handleError(error)
        }
        else
        {
            // do stuff
        }
    })
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

Gom*_*ius 21

找到我自己的问题.您需要登录CloudKit仪表板并选中此复选标记框.

在此输入图像描述

检查完成后,您将能够按日期查询:

let date = NSDate(timeInterval: -60.0 * 120, sinceDate: NSDate())
let predicate = NSPredicate(format: "creationDate > %@", date)
Run Code Online (Sandbox Code Playgroud)

以下是您可以为CloudKit使用哪种NSPredicate的更详细文档:https: //developer.apple.com/documentation/cloudkit/ckquery#//apple_ref/doc/uid/TP40014043-CH1-SW8