如何添加NSOperation QOS .UserInteractive

时间:2016-07-01 00:48:20

标签: swift cloud cloudkit nsoperation

我一直在浏览众多论坛和教程,希望加快我的云端应用程序 - (至少)似乎答案归结为将服务质量功能设置为" UserInteractive& #34 ;.目前,用3条记录更新一个表控制器大约需要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()   
} 

此外,这个问题是从我的其他帐户复制的,以便我可以在必要时使用赏金。

0 个答案:

没有答案