gpt4 book ai didi

iphone - ALAssetsLibrary 不返回 runloop

转载 作者:行者123 更新时间:2023-12-03 20:14:38 25 4
gpt4 key购买 nike

我想显示一个 UICollectionView 但我在加载图像时遇到问题。 AlAssetsLibrary 不会返回到运行循环。

我得到的输出为

2013-04-12 11:36:25.429 Filmriss[459:907] didReturnWithDefaultRepresentation 2013-04-12 11:36:25.431 Filmriss[459:907] didReturnWithDefaultRepresentation 2013-04-12 11:36:25.435 Filmriss[459:907] didReturnWithDefaultRepresentation 2013-04-12 11:36:25.438 Filmriss[459:907] cellForItemAtIndexPath
2013-04-12 11:36:25.450 Filmriss[459:907] cellForItemAtIndexPath
2013-04-12 11:36:25.456 Filmriss[459:907] cellForItemAtIndexPath

在每个图像之后都会调用 didReturnWithDefaultRepresentation 方法。在此方法中,我尝试重新加载 Collection View ,但只有在找到所有图像后才会重新加载。

这是我的代码:

@implementation PhotoEngine
-(void)startLookingForPhotosBetween:(NSDate*)startDate andEndDate:(NSDate*)endDate
{
BOOL __block isValid = NO;

NSMutableArray *representationArray = [NSMutableArray new];
ALAssetsLibrary *assetLibrary = [ALAssetsLibrary new];
[assetLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
[group setAssetsFilter:[ALAssetsFilter allPhotos]];
[group enumerateAssetsUsingBlock:
^(ALAsset *asset, NSUInteger index, BOOL *stop)
{
if (!asset && (index == NSNotFound))
{
if ([self.delegate respondsToSelector:@selector(photoEngine:didFinishWithResults:)]) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.delegate photoEngine:self didFinishWithResults:representationArray];
});
}
}
else {
ALAssetRepresentation *defaultRepresentation = [asset defaultRepresentation];

NSDate *creationDate = [asset valueForProperty:ALAssetPropertyDate];
if (
([startDate compare:creationDate] == NSOrderedAscending) &&
([endDate compare:creationDate] == NSOrderedDescending )
) {
isValid = YES;

}
if(isValid) {

[representationArray addObject:defaultRepresentation.url];
NSURL *url = defaultRepresentation.url;
if ([self.delegate respondsToSelector:@selector(photoEngine:didReturnWithDefaultRepresentation:)]) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
[self.delegate photoEngine:self didReturnWithDefaultRepresentation:url];
});
}

}
}
}];
}
// group == nil signals we are done iterating.
else {
dispatch_async(dispatch_get_main_queue(), ^{

});
}
}
failureBlock:^(NSError *error) {
NSLog(@"error enumerating AssetLibrary groups %@\n", error);
}];

}
@end
// didReturnWithDefaultRepresentation this Method is in CollectionView
-(void)photoEngine:(PhotoEngine*)photoEngine didReturnWithDefaultRepresentation:(NSURL *)defaultRepresentationURL
{
NSLog(@"didReturnWithDefaultRepresentation");
[self.photoDataArray addObject:defaultRepresentationURL];
[self.collectionView reloadData];

}

最佳答案

首先,必须修复[self.collectionView reloadData];在主要标题中。

关于iphone - ALAssetsLibrary 不返回 runloop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15966843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com