簡體   English   中英

如何在Swift中加快performQuery?

[英]How can I speed up performQuery in Swift?

因此,我正在創建一個使用CloudKit來保存和從Cloud獲取圖像和文本的應用程序。 問題是我只能在整個提取完成后才能訪問結果。 我希望能夠在獲取每個記錄時分別獲取它們。 這是代碼。

    func fetchPost() {
    spinner.startAnimating()
    if imageView.image != nil {
        spinner.alpha = 0
    }
    var imageData = [UIImage]()
    var text = [String]()
    let predicate = NSPredicate(value: true)
    let sort = NSSortDescriptor(key: "creationDate", ascending: false)

    let query = CKQuery(recordType: "Post",
        predicate:  predicate)
    query.sortDescriptors = [sort]
    publicDB.performQuery(query, inZoneWithID: nil) {
        results, error in
        if error != nil {
            dispatch_async(dispatch_get_main_queue()) {
                println("Query failed")
                return
            }
        } else {
            println("test")
            var number = 0
            for record in results {
                if let pictureRecord = record as? CKRecord {
                    let post = Post(record: pictureRecord, database: self.publicDB)
                    let postImageData = post.imageData
                    let postText = post.text
                    self.images.append(UIImage(data: postImageData)!)
                    self.texts.append(postText)
                    println("\"\(postText)\" is the text. Fetch successful.")
                    if number == 0 {
                        self.imageView.image = self.images[0]
                        self.nameLabel.text = self.texts[0]
                    }
                    ++number
                } else {
                    println("Records failed")
                }
            }
        }

        self.spinner.stopAnimating()
        self.spinner.alpha = 1
    }
}

謝謝!

如果使用CKQueryOperation ,則可以設置一個回調( recordFetchedBlock ),當從服務器中獲取每個記錄時,將為每個記錄調用該回調。

暫無
暫無

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

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