2012-08-13 23 views
5

Estoy intentando eliminar una imagen pública (cannedACL propiedad del S3PutObjectRequest para cargar la imagen fue [S3CannedACL publicRead]) cargada en un depósito S3.¿Cómo utilizar AWS iOS SDK para eliminar un objeto?

Hay una clase S3DeleteObjectRequest en AWS SDK documentation, pero no parece haber ninguna propiedad o método de inicialización para this class.

Sobre la base de código de ejemplo en otros idiomas, parece que no debería haber key o bucket propiedad o un método de inicialización establecer esas propiedades, ya que hay en la clase S3PutObjectRequest del SDK de iOS, que se utiliza para cargar archivos en un cubo.

¿Qué está pasando aquí? ¿El SDK es simplemente incompleto? ¿Hay alguna forma de eliminar un objeto con iOS AWS SDK?

Respuesta

6

Acaba de salir de la documentación que ha vinculado, pero ¿no funciona?

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

funcionaban como un amuleto. Supongo que necesitaba RTFM :) –

1

La respuesta de Art Gillespie funcionó bien para mí también.

Sin embargo, también descubrí que se puede lograr el mismo mediante el establecimiento de los key y bucket atributos en el S3 eliminar peticiones de objetos:

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

[s3Client deleteObject:dor]; 
8

para el SDK de iOS para S3 V2, este código fue muy útil

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];

Esto se basa en gran medida de la las pruebas unitarias que se han escrito para la biblioteca aquí: https://github.com/aws/aws-sdk-ios/blob/master/AWSS3Tests/AWSS3Tests.m

Cuestiones relacionadas