Je suis nouveau dans Xcode et les langages de programmation et j'ai besoin de votre aide. Je travaille sur une application Message et je suis incapable d'utiliser un bloc de gestionnaire d'achèvement. Voici mon code:Swift 3 Comment écrire correctement Completion Handler Block
@IBAction func SendButton(_ sender: AnyObject) {
if self.textfield.text != "" {
let mess = CKRecord(recordType: "Message")
mess["content"] = textfield.text as CKRecordValue?
let publicdata = CKContainer.default().publicCloudDatabase
publicdata.save(mess, completionHandler: {(record, error) -> Void in
if error == nil {
let indexpath = NSIndexPath(item: self.chat.count, section: 0)
CATransaction.begin()
CATransaction.setDisableActions(true)
self.CollView.performBatchUpdates ({
self.chat.insert(mess, at: self.chat.count)
self.CollView.insertItems(at: [indexpath as IndexPath])
}, completion: {(true) -> Void in
print("Animation completed")
self.CollView.contentOffset = CGPoint(x: 0, y: 40)
})
CATransaction.commit()
print("SAVED")
}else{
print("error")
}})
}
textfield.text = ""
}
J'utilise CATransaaction à performBatchUpdates, mais le bloc achèvement Handler dans la méthode performBatchUpdates ne peut pas être terminée. Comme vous pouvez le voir, ce n'est pas la bonne façon de l'écrire et je le sais, mais j'ai essayé tout ce que je sais pour y arriver, mais ce ne sera pas le cas. L'achèvement:
completion: {(true) -> Void in
print("Animation completed")
self.CollView.contentOffset = CGPoint(x: 0, y: 40)
})
S'il vous plaît aidez-moi. Je vous remercie !!
Bonjour, pouvez-vous poster votre fonction publicdata.save s'il vous plaît – Makaille