ALAssetsLibrary
保存した写真の最初の30枚の写真を列挙するために使用しています。インスタンスの有効期間は有効期間に関連付けられているため、いつでも必要なときにAppDelegate
アクセスできるようにプロパティを作成しました。これが私のコードです:ALAssets
ALAssetsLibrary
ALAssets
if(!_savedAssets) _savedAssets = [[NSMutableArray alloc] init];
else [_savedAssets removeAllObjects];
if(appDelegate.library)
{
[appDelegate.library release];
[appDelegate setLibrary:nil];
}
appDelegate.library = [ALAssetsLibrary new];
__block int count = 0;
[appDelegate.library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
NSLog(@"%d",group.numberOfAssets);
if(count>30) *stop = YES;
[group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *needToStop) {
NSLog(@"%d", index);
if(count<30 && result)
{
UIImage *image = [UIImage imageWithCGImage:result.thumbnail];
[_savedAssets addObject:result];
[self performSelectorOnMainThread:@selector(imageManipulation:) withObject:image waitUntilDone:NO];
count++;
}
else
*needToStop = YES;
}];
} failureBlock:^(NSError *error) {
NSLog(@"%@",error.description);
}];
ご覧のとおり、サムネイルまたはフルサイズの画像にアクセスできるように、最初の30ALAssets
を追加しています。NSMutableArray
アプリが写真を作成したら、この写真をカメラロールに保存し、ALAssets
最初にロードしたときと同じコードでリロードしようとします。リロードする前に、からすべてのオブジェクトを削除しNSMutableArray
、を再初期化しALAssetsLibrary
ます。しかし、これは役に立ちません。私が同じになるたびにALAssets
。ALAssets
アプリをリロードして初めて新品になります。ALAssets
アプリをリロードせずにリロードする方法は?