2012-08-13 16 views
5

Sto tentando di eliminare un'immagine pubblica (cannedACL di proprietà dello S3PutObjectRequest per caricare l'immagine è stata [S3CannedACL publicRead]) caricata su un bucket S3.Come utilizzare AWS iOS SDK per eliminare un oggetto?

Esiste una classe S3DeleteObjectRequest nell'SDK AWS documentation, ma non sembrano esserci proprietà o metodi di inizializzazione per this class.

Basato sul codice di esempio in altre lingue, sembra che non ci dovrebbe essere key o bucket proprietà o un metodo di inizializzazione impostazione quelle proprietà, come ci sono in S3PutObjectRequest classe di iOS SDK, utilizzato per caricare i file su un secchio.

Cosa sta succedendo qui? L'SDK è semplicemente incompleto? C'è un modo per eliminare un oggetto con l'SDK iOS AWS?

risposta

6

Appena uscito dalla documentazione a cui è collegato, ma non funziona?

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

ha funzionato come un fascino. Indovina che avevo bisogno di RTFM :) –

1

Art La risposta di Gillespie ha funzionato bene anche per me.

Tuttavia, ho anche scoperto che è possibile ottenere lo stesso impostando gli attributi key e bucket sul S3 eliminare richiesta di oggetto:

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

[s3Client deleteObject:dor]; 
8

Per l'iOS SDK per S3 V2, questo codice è venuto in aiuto

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

questo si basa pesantemente sulla unit test che sono stati scritti per la biblioteca qui: https://github.com/aws/aws-sdk-ios/blob/master/AWSS3Tests/AWSS3Tests.m

Problemi correlati