写真ライブラリからすべての画像を取得しようとしています。問題は、メソッド[ALAssetsGroup enumerateAssetsUsingBlock:]
が非同期であるため、アセットを使用しようとするまでに、列挙子がアセット配列への入力を開始していないことです。これが私のコードです:
NSMutableArray* photos = [[NSMutableArray alloc] init];
void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result != nil) {
if(![assetURLDictionaries containsObject:[result valueForProperty:ALAssetPropertyURLs]]) {
if(![[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypeVideo]) {
UIImage* img = [UIImage imageWithCGImage:[[result defaultRepresentation] fullScreenImage]];
MyPhoto *photo;
photo = [MyPhoto photoWithImage:img];
[photos addObject:photo];
}
}
}
};
[[assetGroups objectAtIndex:1] enumerateAssetsUsingBlock:assetEnumerator];
self.photos = photos;
NSLog(@"Self.Photos %@", self.photos);
このブロックが実行された後self.photos
は空です。列挙子ブロックが別のスレッドで実行さphotos
れ、割り当てで空であるためだとself.photos = photos
思いますか? 何か案は?