2013-07-30 25 views
0
返回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

回答

1

不要試圖等待。相反,將一個塊傳遞給您的方法,應在所有資產處理塊完成時調用該方法,並將圖像數組傳回給調用方。調用者不應該阻止,你只是想構建你的方法來處理你正在嘗試做的異步特性。