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

Posted

技术标签:

【中文标题】CloudKit - 使用一种字段类型获取 5 条记录...需要 3-4 秒。为啥这么慢?【英文标题】:CloudKit - Fetching 5 records with one field type... takes 3-4 seconds. why is it so slow?CloudKit - 使用一种字段类型获取 5 条记录...需要 3-4 秒。为什么这么慢? 【发布时间】:2016-06-12 20:03:48 【问题描述】:

我有一个记录类型 - “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】:

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

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

【讨论】:

对延迟响应表示歉意,您是否碰巧知道任何 NSO 服务质量启动教程?

以上是关于CloudKit - 使用一种字段类型获取 5 条记录...需要 3-4 秒。为啥这么慢?的主要内容,如果未能解决你的问题,请参考以下文章

在 CloudKit 仪表板中创建布尔字段

从 CloudKit 获取包括 CKReference 的数据

UITableView 单元格未填充 CloudKit 数据

仅获取 cloudkit 中的特定字段?

从 CloudKit 中的 CKRecord.Reference 获取价值

如何对 Cloudkit 记录执行文本搜索?