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];
}
勿論、この方法の最後で、画像は空ですが、各反復のためのすべてのブロックが実行されたとき、私の質問は、どのように私はコールバックを得ることができていますか? Apple's documentationから Thansk
これは私がやろうとしていることとは違っています... – 0xSina
私はそれらを列挙する前に資産を見つける必要があります... – 0xSina
@PragmaOnce * ALAssetsLibraryを使用して資産を*列挙する*。もちろん、希望の場合は、それらを繰り返し処理するために、それらを選択したコンテナに格納することもできます。 'nil'を見たらコールバックを作り、そのブロック内の番号を数えることもできます。数字が辞書の項目数に達すると、すべてのコールバックが終了したことがわかります。 – dasblinkenlight