0
不知道这是否是该问题的正确标题或者不是。通常,我有一个字典数组,并且正在迭代字典,传递一个有时会被执行的块未来(异步)并将结果保存在字典中。这里是我的方法:使用异步块对NSArray进行迭代
- (void)elcImagePickerController:(ELCImagePickerController *)picker didFinishPickingMediaWithInfo:(NSArray *)info {
NSLog(@"%@", info);
NSMutableDictionary *images = [NSMutableDictionary dictionaryWithCapacity:[info count]];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
for (NSDictionary *dict in info) {
NSURL *assetURL = [dict objectForKey:UIImagePickerControllerReferenceURL];
[library assetForURL:assetURL
resultBlock:^(ALAsset *asset) {
NSString *filename = asset.defaultRepresentation.filename;
UIImage *image = [dict objectForKey:UIImagePickerControllerOriginalImage];
[images setObject:filename forKey:image];
}
failureBlock:^(NSError *error) {
[SVProgressHUD dismissWithError:@"Error occured."];
}
];
}
NSLog(@"%@", images);
[library autorelease];
[self dismissImagePickerVC];
}
Ofcourse,在这个方法结束时,图像是空的,但我的问题是,如何才能得到一个电话回来时,一切为每次迭代块已被执行? Thansk
这同我尝试做不同的... – 0xSina 2012-03-14 10:43:09
我需要找到资产之前,我通过他们列举...... – 0xSina 2012-03-14 10:47:13
@PragmaOnce *您找到*资产通过*使用'ALAssetsLibrary'枚举*通过他们。当然,如果你愿意的话,你可以将它们存储在你选择的容器中,以便再次遍历它们。您也可以在看到'nil'时进行回调,并在块中计算它们的数量。一旦数字达到字典中的项目数量,就知道所有回调都已完成。 – dasblinkenlight 2012-03-14 10:56:51