2012-08-13 69 views
5

我試圖刪除公開圖片(cannedACLS3PutObjectRequest上傳圖片的屬性爲[S3CannedACL publicRead])上傳到S3存儲桶。如何使用AWS iOS SDK刪除對象?

AWS SDK documentation中有S3DeleteObjectRequest類,但似乎沒有this class的任何屬性或初始化方法。

基於其他語言的示例代碼,它看起來像應該有keybucket財產或初始化方法中設置這些屬性,因爲在iOS SDK中的S3PutObjectRequest類,用於將文件上傳到一個桶。

這是怎麼回事? SDK是否不完整?有沒有辦法使用iOS AWS SDK刪除對象?

回答

6

剛剛關閉您鏈接到的文檔,但這不起作用嗎?

[s3Client deleteObjectWithKey:@"objectKey" withBucket:@"my-bucket"]; 
+0

工作就像一個魅力。猜猜我需要RTFM :) – 2012-08-16 20:53:46

1

藝術Gillespie的回答對我來說工作得很好。

不過,我也發現了,你可以通過在S3刪除對象請求設置keybucket屬性達到相同的:

S3DeleteObjectRequest *dor = [[S3DeleteObjectRequest alloc] init]; 
dor.key = AWS_OBJ_PATH; 
dor.bucket = AWS_BUCKET; 

[s3Client deleteObject:dor]; 
8

對於iOS的SDK爲S3 V2,這個代碼就派上了用場

AWSS3 *s3 = [AWSS3 defaultS3]; 
 
       AWSS3DeleteObjectRequest *deleteRequest = [AWSS3DeleteObjectRequest new]; 
 
       deleteRequest.bucket = S3BucketName; 
 
       deleteRequest.key = climb.imageKey; 
 
       [[[s3 deleteObject:deleteRequest] continueWithBlock:^id(BFTask *task) { 
 
        if(task.error != nil){ 
 
         if(task.error.code != AWSS3TransferManagerErrorCancelled && task.error.code != AWSS3TransferManagerErrorPaused){ 
 
          NSLog(@"%s Error: [%@]",__PRETTY_FUNCTION__, task.error); 
 
         } 
 
        }else{ 
 
         // Completed logic here 
 
        } 
 
        return nil; 
 
       }] waitUntilFinished];

這在很大程度上基於爲這個圖書館編寫的單元測試在這裏:https://github.com/aws/aws-sdk-ios/blob/master/AWSS3Tests/AWSS3Tests.m