J'ai un projet swift
et j'utilise Amazon Web Services.Utilisation ambiguë de `continuer` après la mise à niveau de Swift 2.2 vers Swift 3.0
J'ai une fonction responsable du téléchargement d'image à mon seau S3
, à Swift 2.2, il a bien fonctionné et le code a été comme suit:
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) {
...
Maintenant, après la mise à niveau Swift 3, je:
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) {
maintenant dans la dernière déclaration transferManager?.upload(uploadRequest).continueWithBlock
renvoie une erreur qui dit
'continueWithBlock' has been renamed to 'continue(_:)'
donc je suivre leurs conseils et changer à:
transferManager?.upload(uploadRequest).continue {
mais il me renvoie une erreur:
Ambigous use of continue
Les méthodes disponibles sont ici:
mais je Je ne suis pas sûr de ce que je pourrais utiliser dans ce cas. Pouvez-vous m'aider?
'continuerAvecBit()' -> 'continuer (bloquer:)'. Dans Swift 3 'xWithY()' devient 'x (y:)'. – user28434
J'ai essayé de le remplacer comme vous l'avez suggéré, mais l'erreur indique que 'AWSTask n'a aucun membre continuer (block:)' ... –
user3766930
Avez-vous converti le code à Swift 3 vous-même, ou c'est le code officiel des développeurs AWS lib? Si ce n'est pas votre conversion, vous devriez contacter les développeurs de lib avec ce problème, si convers est le vôtre, vous devriez toujours vérifier la source AWS lib pour mettre à jour la version 3 de Swift. Parce que cela ressemble à un mauvais cas de conversion de nom. – user28434