我尝试使用tableview查看我的所有应用相册。 现在,问题是每当我得到重新加载数据时它似乎无法工作。 我尝试加载保存在项目中的图像,它工作正常。
我做错了什么?
[super viewDidLoad];
// Declare vars.
NSMutableArray *uploadImages = [NSMutableArray new];
ALAssetsLibrary *library = AssatLibaryHelper.defaultAssetsLibrary;
// Going on albums..
[library enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
NSInteger numberOfAssets = [group numberOfAssets];
// If there photos..
if (numberOfAssets > 0)
{
// Going on all the photos
for (int i = 0; i <= numberOfAssets-1; i++)
{
[group enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:i] options:0 usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop)
{
if (result != nil)
{
UIImage *thumbnail = [UIImage imageWithCGImage:[result thumbnail]];
[uploadImages addObject:thumbnail];
}
}];
}
self.allImages = uploadImages;
[self.tableView reloadData];
}
}
failureBlock:^(NSError *error)
{
}];
答案 0 :(得分:0)
您遇到一些与异步代码相关的问题。
首先,只要您的ALAsset
仍然存在,您的ALAssetsLibrary
就会一样好。但是当ALAssetsLibrary
返回时,viewDidLoad
会被取消分配。
而不是使用局部变量:
ALAssetsLibrary *library = …
改为使用strong
属性:
@property (nonatomic, strong) ALAssetsLibrary *library;
self.library = …
其次,您的reloadData
来电之前正在进行,并且图片会存储到uploadImages
。在保存所有图像后,您需要重新加载表视图。