CloudKit - 使用一种字段类型获取5条记录...需要3-4秒。为什么这么慢?

时间:2016-06-12 20:03:48

标签: swift segue cloudkit ckquery

我有一个记录类型 - “DiningTypes”。 “DiningTypes只有一个字段类型,这是一个字符串。我有5个记录......加载一个表需要3-4秒。这怎么这么慢?我需要开始一个提取过程吗?以前的控制器有更快的UI响应时间?

import UIKit
import CloudKit

class table1: UITableViewController {

var categories: Array<CKRecord> = []
var fetchedcategories: Array<CKRecord> = []

override func viewDidLoad() {
    super.viewDidLoad()
    func fetchdiningtypes()

    {
        let container = CKContainer.defaultContainer()
        let publicDatabase = container.publicCloudDatabase
        let predicate = NSPredicate(value: true)

        let query = CKQuery(recordType: "DiningTypes", predicate: predicate)


        publicDatabase.performQuery(query, inZoneWithID: nil) { (results, error) -> Void in
            if (error != nil)
            {
                print("Error" + (error?.localizedDescription)!)
            }
            else
            {
                for result in results!
                {
                    self.categories.append(result)
                }

                              }
        }

    }
    fetchdiningtypes()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
 override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return categories.count
}
   override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("dining")     as! table1cell
    let restaurant: CKRecord = categories[indexPath.row]
    cell.Name.text = restaurant.valueForKey("Name") as? String

    return cell
}
}

1 个答案:

答案 0 :(得分:1)

CloudKit操作的默认服务质量为NSQualityOfServiceUtility。如果您的应用程序在请求运行时不在前台,您可能会看到运行时间比平时要长。

尝试使用CKQueryOperation并将其qualityOfService设置为NSOperationQualityOfServiceUserInitiated