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 获取包括 CKReference 的数据
UITableView 单元格未填充 CloudKit 数据