У меня есть проект swift
, и я использую там Amazon Web Services.Неоднозначное использование `continue` после обновления от Swift 2.2 до Swift 3.0
У меня есть функция, которая отвечает за загрузку изображения на мой S3
ведро, в Swift 2.2 он работал хорошо, и код был следующим:
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:CognitoRegionType,
identityPoolId:CognitoIdentityPoolId)
let configuration = AWSServiceConfiguration(region:CognitoRegionType, credentialsProvider:credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest.body = NSURL(string: "file://"+pathToFile)
uploadRequest.key = NSProcessInfo.processInfo().globallyUniqueString + "." + ext
uploadRequest.bucket = S3BucketName
uploadRequest.contentType = contentType + ext
let transferManager = AWSS3TransferManager.defaultS3TransferManager()
transferManager.upload(uploadRequest).continueWithBlock { (task) -> AnyObject! in
if (task.completed) {
...
Теперь, после обновления до Swift 3, у меня есть:
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:CognitoRegionType,
identityPoolId:CognitoIdentityPoolId)
let configuration = AWSServiceConfiguration(region:CognitoRegionType, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest?.body = URL(string: "file://"+pathToFile)
uploadRequest?.key = ProcessInfo.processInfo.globallyUniqueString + "." + ext
uploadRequest?.bucket = S3BucketName
uploadRequest?.contentType = contentType + ext
let transferManager = AWSS3TransferManager.default()
transferManager?.upload(uploadRequest).continueWithBlock { (task) -> AnyObject! in
if (task.isCompleted) {
Теперь в последнем заявлении transferManager?.upload(uploadRequest).continueWithBlock
выдает ошибку, которая говорит
'continueWithBlock' has been renamed to 'continue(_:)'
поэтому я следую их советам и изменить его на:
transferManager?.upload(uploadRequest).continue {
но потом он бросает мне ошибку:
Ambigous use of continue
Доступные методы здесь:
но я Я не знаю, что я могу использовать в этом случае. Можете ли вы мне помочь?
'continueWithBlock()' -> 'continue (block:)'. В Swift 3 'xWithY()' становится 'x (y:)'. – user28434
Я попытался заменить его, как вы предложили, но тогда ошибка говорит: «AWSTask не имеет ни одного члена continue (block:)' ... –
user3766930
Вы преобразовали код в Swift 3 самостоятельно или это официальный код от разработчиков AWS lib? Если это не ваше преобразование, вам следует связаться с разработчиками lib с этой проблемой, если ваш разговор является вашим, вы все равно должны проверить источник AWS lib для обновления до версии Swift 3. Потому что это выглядит как неудачный вариант преобразования имени. – user28434