如何在Swift中加快performQuery的速度?

时间:2015-04-30 21:54:10

标签: swift cloudkit

所以我正在创建这个使用CloudKit来保存和从云端获取图像和文本的应用程序。问题是我只能在整个提取完成后访问结果。我希望能够在获取每个记录时单独获取它们。这是代码。

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

谢谢!

0 个答案:

没有答案