【发布时间】:2012-10-16 04:35:01
【问题描述】:
我的 ipad 设备中有一个自定义文件夹。我正在使用此代码从自定义相册中获取图像:
self.assetGroups = [[NSMutableArray alloc] init];
// Group enumerator Block
dispatch_async(dispatch_get_main_queue(), ^
{
void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop)
{
if (group == nil) {
return;
}
if ([[group valueForProperty:ALAssetsGroupPropertyName] isEqualToString:@"Ganesh"]) {
[self.assetGroups addObject:group];
[self loadImages];
return;
}
if (stop) {
return;
}
};
// Group Enumerator Failure Block
void (^assetGroupEnumberatorFailure)(NSError *) = ^(NSError *error) {
UIAlertView * alert = [[UIAlertView alloc]
initWithTitle:@"ERROR" message:[NSString stringWithFormat:@"No Albums Available"]
delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
[alert release];
};
// Enumerate Albums
self.library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupAll
usingBlock:assetGroupEnumerator
failureBlock:assetGroupEnumberatorFailure];
});
要从我的自定义文件夹中检索所有图像,我使用这个:
(void)loadImages {
ALAssetsGroup *assetGroup = [self.assetGroups objectAtIndex:0];
NSLog(@"asserts group %@",self.assetGroups);
NSLog(@"ALBUM NAME:;%@",[assetGroup valueForProperty:ALAssetsGroupPropertyName]);
[assetGroup enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop){
if(result == nil) {
return;
}
UIImage *img = [UIImage imageWithCGImage:[[result defaultRepresentation] fullScreenImage]
scale:1.0 orientation:(UIImageOrientation)[[result valueForProperty:@"ALAssetPropertyOrientation"] intValue]];
NSLog(@"image name%@",img);
[arrayOfImage addObject:img];
NSLog(@"arrayOfImage %@",arrayOfImage);
// [imageToAnimate setImage:img];
}];
}
当我使用模拟器但不在设备中运行时它工作正常:它执行失败块并说没有可用的专辑。
【问题讨论】:
-
要改变的一件事是不要让你的库变量属性,即而不是合成它,让它成为私有 iVar 并尝试使用它。
-
不,它仍然给出同样的错误。
-
您收到这个错误真是太棒了,因为相同的代码在我的设备上运行良好。
-
好的,感谢您的回复。我会检查自己,一旦它起作用,我会告诉你我犯错的问题
-
还有一个小帮助你知道这是否可能stackoverflow.com/questions/12908338/…请找到并告诉我