我已经看到很多关于SO的回答这个问题,但是我无法正确实现,因为文件没有下载。
一些背景是我在s3中有一组10个文件。我可以通过S3ListObjectsResult看到它们。然后我将结果存储在过滤的NSMutableArray s3Result中。这一切都很好。
后来,我实际上想下载文件,所以我尝试这样做:
在.h文件中:
@interface MainViewController : UIViewController <AmazonServiceRequestDelegate>
@property (nonatomic, strong) NSMutableArray *s3Objects;
@property (nonatomic, strong) NSMutableArray *s3Results;
在.m文件中:
AmazonS3Client *s3 = [[AmazonS3Client alloc] initWithAccessKey:key withSecretKey:secret];
for (NSString *result in s3Results) {
S3GetObjectRequest *s3Request = [[S3GetObjectRequest alloc] initWithKey:s3Result withBucket:bucket];
s3Request.delegate = self;
S3GetObjectResponse *s3Response = [s3 getObject:s3Request];
[s3Objects addObject:[[NSData alloc] initWithData:s3Response.body]];
编译很好并运行正常,但“下载”文件的速度太快而无法实际工作,实际上self.s3Objects返回的计数为0.
编辑: 好的,所以我添加了AWS需要的一些方法,即didCompleteWithResponse,didReceiveData,didFailWithError和didFailWithServiceException。
结果是现在正在下载文件(我可以打印出response.body并查看数据)但是它们没有被添加到s3Objects中:
-(void)request:(AmazonServiceRequest *)request didCompleteWithResponse:(AmazonServiceResponse *)response
{
[self.s3Objects addObject:[[NSData alloc] initWithData:response.body]];
}
即使在此之后,self.s3Objects的计数总是返回0。
答案 0 :(得分:1)
我得到了这个工作。原始问题的答案是实现缺少的AWS方法。第二个问题的答案是我错过了初始化s3Objects数组。这样做之后,效果很好。