gpt4 book ai didi

swift - 如何将 NS 操作 QOS = .UserInteractive 添加到查询功能

转载 作者:行者123 更新时间:2023-11-30 13:19:11 27 4
gpt4 key购买 nike

我一直在浏览大量论坛和教程,希望能够加快我的 cloudkit 应用程序的速度 - (至少)似乎答案归结为将服务质量功能设置为“UserInteractive”。目前,更新具有 3 条记录的表 Controller 大约需要 2/3 秒,每条记录只有一个字符串变量,通过标签显示。据我所知,将 QoS 设置为用户交互将迫使 UI 更新得更快。但是,我不确定如何正确地完整实现 qos 代码。就目前情况而言,这是我的代码,需要 2/3 秒才能加载。

  func fetch()
{
let publicDatabase = CKContainer.defaultContainer().publicCloudDatabase
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Dining", 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)
}

dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
})
}
}
}
fetch()
}

因此,为了获得更快的 UI 响应,我可以实现这样的东西吗?

 func fetch()
{
let publicDatabase = CKContainer.defaultContainer().publicCloudDatabase
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Dining", 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)
}

let qualityOfServiceClass = QOS_CLASS_UserInteractive
let Queue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(Queue, {
print("This is run on the background queue")

dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
})
})

}
}
}
fetch()
}

最佳答案

按照以下方式使用查询操作:

func fetch(){
let publicDatabase = CKContainer.defaultContainer().publicCloudDatabase
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Dining", predicate: predicate)
let queryOperation = CKQueryOperation(query: query)
queryOperation.qualityOfService = .userInteractive
queryOperation.recordFetchedBlock = {(record: CKRecord) -> Void in
// Do things with record
queryOperation.queryCompletionBlock = {(cursor, error) in
// Handle error and do things

}
}
publicDB.add(queryOperation)
}

请参阅有关 NSOperation 及其实例属性 QualityofService 的文档

关于swift - 如何将 NS 操作 QOS = .UserInteractive 添加到查询功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37933307/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com