Не удается преобразовать значение типа

#ios #swift3 #xcode8 #cloudinary

#iOS #swift3 #xcode8 #cloudinary

Вопрос:

В моем проекте я использую Cloudinary, хотя я использую следующую функцию в Xcode 7.3, она работает нормально, но в Xcode 8 я получил ошибку.

(Не удается преобразовать значение типа ([AnyHashable: Any]!,String!,Int!,AnyObject) -> () в ожидаемый тип аргумента (CLUploaderCompletion).

Как мне решить эту ошибку.

 uploader.upload(forUpload, options: nil, withCompletion:onCloudinaryCompletion, andProgress:onCloudinaryProgress)


func onCloudinaryCompletion(_ successResult:[AnyHashable: Any]!, errorResult:String!, code:Int, idContext:AnyObject!) {
    print("successResult(successResult)")
}

func onCloudinaryProgress(_ bytesWritten:Int, totalBytesWritten:Int, totalBytesExpectedToWrite:Int, idContext:AnyObject!) {        
    print("onCloudinaryProgress")

}
  

Скриншот ошибки:

введите описание изображения здесь

Комментарии:

1. У кого-нибудь есть идея решить эту ошибку?

Ответ №1:

В swift 3 некоторые вещи изменились, и одна из них заключается в том, что id из objective c теперь Any в swift вместо AnyObject . Измените свой idContext на тип Any .

Кроме того, вы также должны изменить тип вашего словаря и строки на необязательный. Так что это становится String? и [AnyHashable: Any]? .

Комментарии:

1. Я изменил тип idContext с AnyObject на Any, но, тем не менее, у меня та же ошибка.

2. Отредактировал ответ.

3. Привет, Майстер, спасибо, что спас меня. Ваше решение работает для меня.

4. Вы должны пометить ответ как принятый, если он решил вашу проблему. Галочка рядом с ответом.