从ALAssetsLibrary

问题描述:

返回UIImages的NSArray的

我工作的照片应用程序,这里的交易:从ALAssetsLibrary

我已创建自定义照片专辑添加了一些照片给它(用户可以创建多张唱片)。我用这个ALAssetsLibraryCustomPhotoAlbum类别。一切工作完美无暇,直到我需要把这些照片重新使用它们。 所以我创建了这个类别的自定义metod,我保存UIImagesNSMutableArray,但我想这个方法返回这个数组以外...我的问题是enumerateAssetsUsingBlock:运行在后台并保存照片到专辑,而我想访问他们!我该如何为这种方法做点什么,等到每张照片加载到专辑后再返回NSArray

这里是我的方法:

- (void)loadImagesFromAlbumNamed:(NSString *)name 
{ 
    NSMutableArray *photos = [[NSMutableArray alloc] init]; 

    [self enumerateGroupsWithTypes:ALAssetsGroupAll 
         usingBlock:^(ALAssetsGroup *group, BOOL *stop) { 
          if (group == nil) { 
           return; 
          } 

          if ([[group valueForProperty:ALAssetsGroupPropertyName] isEqualToString:name]) { 
           [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) { 
            if (result == nil) { 
             return; 
            } 

            // NSLog(@"%@", result); 
            UIImage *image = [UIImage imageWithCGImage:(__bridge CGImageRef)([result defaultRepresentation])]; 
            [photos addObject:image]; 
           }]; 
           NSLog(@"%@", [photos description]); 
          } 
         } failureBlock:^(NSError *error) { 
          NSLog(@"%@", [error localizedDescription]); 
         }]; 
} 

我希望你明白我的观点......如果没有,只是问我会试着解释它更好的办法!

+0

我已经管理了如何在外部获得一个'NSArray'(通过param传递目标数组),但是当我想从它获得'UIImages'时它仍然是空的... – cojoj

+0

嘿,我正在处理同样的问题。你可以告诉我什么是enumerateGroupsWithTypes?....它显示错误在那一行.. –

+0

'enumerateGroupsWithTypes'是枚举通过您的设备上可用的每个AssetLibrary ...所以在我的情况下,它列举了一切。 – cojoj

不要试图等待。相反,将一个块传递给您的方法,应在所有资产处理块完成时调用该方法,并将图像数组传回给调用方。调用者不应该阻止,你只是想构建你的方法来处理你正在尝试做的异步特性。