swift我应该在哪里添加tableview.reload以从第一次单击按钮获取数据?
下面是我从icloudkit获取图像的代码,但是现在我必须单击UIbutton“getAlbum”两次才能在表视图中显示图像。那么,我是否在错误的位置添加了tableview.reload()m?请告知swift我应该在哪里添加tableview.reload以从第一次单击按钮获取数据?,swift,cloudkit,Swift,Cloudkit,下面是我从icloudkit获取图像的代码,但是现在我必须单击UIbutton“getAlbum”两次才能在表视图中显示图像。那么,我是否在错误的位置添加了tableview.reload()m?请告知 @IBAction func getAlbum(_ sender: AnyObject) { //Below line to dismiss the keyboard. textEntercode.resignFirstResponder() if (self.textEntercode.t
@IBAction func getAlbum(_ sender: AnyObject) {
//Below line to dismiss the keyboard.
textEntercode.resignFirstResponder()
if (self.textEntercode.text == "")
{
let alert = UIAlertController(title: "No Code Entered", message: "Please enter photos code", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.cancel, handler: nil));
//event handler with closure
present(alert, animated: true, completion: nil);
}
else //G
{
// let code: Int64 = Int64(self.textEntercode.text!)!
var photoCode = textEntercode.text!
// convert the characters to upper case before getting data from database
photoCode = photoCode.uppercased()
var count = 0
let Container = CKContainer.default()
let database = Container.publicCloudDatabase
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Photos", predicate: predicate) //Photos is table name in cloudkit server
//-------Fetch the data---------------------
database.perform(query, inZoneWith: nil) { //A
records, error in
if error != nil { //B
print(error?.localizedDescription ?? 10)
} // B
else { //C
count = (records?.count)!
print("countttttt \(count)")
for myrecord in records!
{ //D
self.Saveddata.append(myrecord as CKRecord)
//self.tableview.reloadData()
} //D
let Queue = OperationQueue.main
Queue.addOperation() { //E
self.tableview.reloadData()
} //E
} //C
} //A
} //G
位置是正确的(在重复循环之后),但是使用
DispatchQueue.main.async{}
而不是Queue.addOperation(){}
但是我使用NSoperation来获取数据-可以吗?没有解决它-我尝试过,但在这种情况下保持OperationQueue