簡體   English   中英

如何在 CloudKit 中通過 creationDate 進行查詢?

[英]How to query by creationDate in CloudKit?

我想從 CloudKit 獲取最后 X 分鍾的公共/私人條目。

我嘗試了這種效果但失敗了:

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

但這將為我提供數據,但我不確定我是在查詢所有內容還是只是查詢某種上限:

    let predicate = NSPredicate(value: true)

我希望能夠在一定時間內進行查詢。 這可能不做客戶端的創建排序邏輯嗎?

這是完整的代碼塊:

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
        }
    })
}

謝謝。

2020 年 5 月 10 日更新:

發現了我自己的問題。 您需要登錄到 CloudKit 儀表板,轉到架構並確保“索引類型”設置為可查詢。

在此處輸入圖片說明

以下是 CloudKit 可以使用哪種 NSPredicate 的更詳細文檔: https : //developer.apple.com/documentation/cloudkit/ckquery#//apple_ref/doc/uid/TP40014043-CH1-SW8

設置完成后,您將能夠按日期查詢,如下所示:

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

[已棄用] 下面第一個接受的答案的 CloudKit 儀表板屏幕截圖:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM