Iphone 通过委托方法S3将UIImage添加到NSMutableArray
我试图让AWSS3从S3存储桶中获取图像,下面的代码分为两部分。第一个(我认为)在启动数组以将对象放入后创建get object请求(arrayImages,它从arrayPointer获取计数)。第二种是委托方法,它在对象(数据)完成后将其放入ArrayImage中。我假设每次调用委托方法时,它都会添加一个新对象。这里有点不对劲:Iphone 通过委托方法S3将UIImage添加到NSMutableArray,iphone,iterator,amazon-s3,nsmutablearray,amazon-web-services,Iphone,Iterator,Amazon S3,Nsmutablearray,Amazon Web Services,我试图让AWSS3从S3存储桶中获取图像,下面的代码分为两部分。第一个(我认为)在启动数组以将对象放入后创建get object请求(arrayImages,它从arrayPointer获取计数)。第二种是委托方法,它在对象(数据)完成后将其放入ArrayImage中。我假设每次调用委托方法时,它都会添加一个新对象。这里有点不对劲: -(void)gets3ImageArray { if (arrayImages == nil) { arrayImages = [[NS
-(void)gets3ImageArray
{
if (arrayImages == nil) {
arrayImages = [[NSMutableArray alloc] initWithCapacity:[arrayPointer count]];
}
else
{
[arrayImages removeAllObjects];
}
AmazonS3Client *s3 = [[AmazonS3Client alloc] initWithAccessKey:ACCESS_KEY_ID withSecretKey:SECRET_KEY];
for (NSString *name in arrayPointer){
@try {
S3GetObjectRequest *gor = [[S3GetObjectRequest alloc]initWithKey:name withBucket:[Constants pictureBucket]];
[gor setDelegate:self];
[s3 getObject:gor];
}
@catch (AmazonClientException *exception) {
[Constants showAlertMessage:exception.message withTitle:@"Download Error"];
}
}
}
-(void)request:(AmazonServiceRequest *)request didReceiveData:(NSData *)data
{
UIImage *myImage = [[UIImage alloc] initWithData:data];
if(!myImage)
{
NSLog(@"NO IMAGE");
[arrayImages addObject:[UIImage imageNamed:@"placeholder.png"]];
}
else
{
[arrayImages addObject:[UIImage imageWithData:data]];
}
您需要将收到的数据附加到
-(void)request:(AmazonServiceRequest *)request didReceiveData:(NSData *)data
…方法,因为它可以多次调用。在头文件中声明NSMutableData*responseData并追加数据,直到调用didCompleteWithResponse委托为止
[responseData appendData:data];
在调用AmazonS3Client之前,请确保已分配可变数据
responseData = [[NSMutableData data] retain]; // or autorelease or not depending on ARC etc
您可能需要实现所有这些委托:(但是amazon文档应该能够确认)
- DidReceiverResponse:读取主体数据时发送。可以多次调用
- didReceiveData:读取正文数据时发送。可以多次调用
- didCompleteWithResponse:在读取和处理整个响应时发送。发送到此方法的对象与发出非异步请求时返回的对象相同
- didSendData:请求传输数据时发送
- didFailWithError:在基础连接出现基本故障时发送
- DidFailWithService异常:当服务响应错误消息时发送