Объявление функции с закрытием в Swift

Я хочу создать функцию с завершением, как в этом коде. Таким образом, функция должна получить message и блок завершения.

QMServicesManager.instance().chatService.chatAttachmentService.getImageForAttachmentMessage(message, completion: {
              [weak self] (error: NSError?, image: UIImage?) -> Void in

              guard attachmentCell.attachmentID == attachment.ID else {
                return
              }

              self?.attachmentCellsMap.removeObjectForKey(attachment.ID)

              guard error == nil else {
                // TODO - ui. show error later
                //SVProgressHUD.showErrorWithStatus(error!.localizedDescription)
                print("Error downloading image from server: \(error).localizedDescription")
                return
              }

              if image == nil {
                print("Image is nil")
              }

              attachmentCell.setAttachmentImage(image)
              cell.updateConstraints()

              })
          }

В Objective-C это просто объявлено как:

- (void)getImageForAttachmentMessage:(QBChatMessage *)attachmentMessage completion:(void(^)(NSError *error, UIImage *image))completion

Мне нужна такая же функция в Swift и как на самом деле обрабатывать этот блок.


person Matrosov Alexander    schedule 12.05.2016    source источник


Ответы (1)


Сохраняя точность, я думаю, вы хотите, чтобы это было так:

func getImageForAttachmentMessage(attachmentMessage : QBChatMessage, completion: (error: NSError?, image: UIImage) -> Void) -> Void{
    //code goes here
    let error = NSError(domain: "domain", code: 1, userInfo: nil)
    completion(error: error, image: UIImage(named: "sample")!)
}
person sargeras    schedule 12.05.2016