ALAssetsLibrary zwraca te same zasoby po dodaniu nowego zdjęcia do rolki aparatu - cel c
używamALAssetsLibrary
wyliczyć pierwsze 30 zdjęć na moich Zapisanych zdjęciach. Stworzyłem nieruchomość wAppDelegate
mieć dostęp doALAssets
za każdym razem, kiedy chcę, bo życieALAssetsLibrary
instancja jest powiązanaALAssets
dożywotni. Oto mój kod:
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);
}];
Jak widać, dodaję pierwszą 30ALAssets
do mojegoNSMutableArray
, aby mieć dostęp do miniatur lub pełnych rozmiarów obrazu. Po zrobieniu przeze mnie zdjęcia zapisuję to zdjęcie na rolce aparatu i próbuję ponownie załadować mojeALAssets
z tym samym kodem, co przy pierwszym ładowaniu. Przed przeładowaniem usuwam wszystkie obiekty zNSMutableArray
i ponowne inicjowanieALAssetsLibrary
. Ale to nie pomaga. Za każdym razem jestem taki samALAssets
. Jestem nowyALAssets
tylko po ponownym załadowaniu aplikacji. Jak przeładowaćALAssets
bez ponownego ładowania aplikacji?