2

最近リリースされた新しいバージョンの AWS を使用しようとしています。古いバージョンは Android で動作していますが、Swift と新しいバージョンの AWS S3 は初めてで、この問題で数日間ブロックされています。The operation could not be completed. というエラー メッセージが表示され続けます。(ココア エラー 260)

ここに私のアプリデリゲートがあります

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    let credentialsProvider = AWSCognitoCredentialsProvider.credentialsWithRegionType(
        AWSRegionType.USEast1,
        accountId: cognitoAccountId,
        identityPoolId: cognitoIdentityPoolId,
        unauthRoleArn: cognitoUnauthRoleArn,
        authRoleArn: cognitoAuthRoleArn)
    let defaultServiceConfiguration = AWSServiceConfiguration(
        region: AWSRegionType.USEast1,
        credentialsProvider: credentialsProvider)
    AWSServiceManager.defaultServiceManager().setDefaultServiceConfiguration(defaultServiceConfiguration)
  AWSServiceManager.defaultServiceManager().setDefaultServiceConfiguration(defaultServiceConfiguration)
    return true
}

バケットに画像をアップロードしようとしている場所のコード

    let fileUrl = NSURL(string:imagePath!)
    println(imagePath)
    UIImageJPEGRepresentation(self.image, 1).writeToURL(fileUrl, atomically: true)
    var indent:NSString = "closr"
    var uploadRequest:AWSS3TransferManagerUploadRequest =        AWSS3TransferManagerUploadRequest()
    uploadRequest.bucket = "closr-bucket"
    uploadRequest.key = "filename.jpg"
    uploadRequest.contentType = "image/jpeg"
    uploadRequest.body = fileUrl
    uploadRequest.uploadProgress = { (bytesSent:Int64, totalBytesSent:Int64,  totalBytesExpectedToSend:Int64) -> Void in
        dispatch_sync(dispatch_get_main_queue(), {() -> Void in
            println(totalBytesSent)
        })
    }

          AWSS3TransferManager.defaultS3TransferManager().upload(uploadRequest).continueWithBlock { (task) -> AnyObject! in
        if (task.error != nil) {
                //failed
                println("failed")
                println(task.error.code)
                println(task.error.localizedDescription)
        } else {
            //completed
            println("completed")
        }
        return nil
    }
4

1 に答える 1

3

fileURLWithPath クラス メソッドを使用して NSURL オブジェクトをインスタンス化してみてください。これは、NSURL を使用してローカル ファイルにアクセスする正しい方法です。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/#//apple_ref/occ/clm/NSURL/fileURLWithPath:isDirectory :

于 2014-10-20T10:15:31.007 に答える