我正在使用以下代码访问所有ALAssetsLibrary图像,但ALAssetsLibrary使用ALAssetsLibrary中保存的图像向我提供已保存的视频缩略图。如何使用代码防止这种情况,以便我只能获得保存的图像?
//Method to get all images from devices library
- (NSMutableArray*)getAllImagesFromLibrary
{
//get all images from image library
void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result != NULL) {
//Insert objects into array
[self.arrOfAllImages addObject:result];
}
};
void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) {
if(group != nil) {
[group enumerateAssetsUsingBlock:assetEnumerator];
}
};
//NSMutableArray allacation
NSMutableArray *arrOfAllImage = [[NSMutableArray alloc] init];
static dispatch_once_t pred = 0;
static ALAssetsLibrary *library = nil;
dispatch_once(&pred, ^{
library = [[ALAssetsLibrary alloc] init];
});
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:assetGroupEnumerator
failureBlock: ^(NSError *error) {
NSLog(@"Failure");
}];
return arrOfAllImage;
}
答案 0 :(得分:2)
在枚举之前设置filter:
[group setAssetsFilter: [ALAssetsFilter allPhotos]];
答案 1 :(得分:1)
检查你的结果,如果它会对添加数组进行成像,否则不是
void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result != NULL) {
if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto])
{
//Insert objects into array
[self.arrOfAllImages addObject:result];
}
}
};
答案 2 :(得分:0)
您可以通过 ALAssetsGroupType
提及多种类型的资产他们是
ALAssetsGroupLibrary
ALAssetsGroupAlbum
ALAssetsGroupEvent
ALAssetsGroupFaces
ALAssetsGroupSavedPhotos
ALAssetsGroupPhotoStream
ALAssetsGroupAll
1
<强> ALAssetsGroupLibrary 强>
图书馆组,其中包含同步的所有资产 的iTunes。
适用于iOS 4.0及更高版本。
在
中声明ALAssetsLibrary.h
。
2
<强> ALAssetsGroupAlbum 强>
在设备上创建或从iTunes同步的所有相册,而不是 包括Photo Stream或Shared Streams
适用于iOS 4.0及更高版本。
在
中声明ALAssetsLibrary.h
。
3
<强> ALAssetsGroupEvent 强>
所有事件,包括在Camera Connection Kit中创建的事件 导入。
适用于iOS 4.0及更高版本。
在
中声明ALAssetsLibrary.h
。
4
<强> ALAssetsGroupFaces 强>
从iTunes同步所有面孔专辑。
适用于iOS 4.0及更高版本。
在
中声明ALAssetsLibrary.h
。
5
<强> ALAssetsGroupSavedPhotos 强>
相机胶卷中的所有照片。
适用于iOS 4.0及更高版本。
在
中声明ALAssetsLibrary.h
。
6
**ALAssetsGroupPhotoStream**
The PhotoStream album.
In iOS 6.0 and later, this also includes Shared Streams.
Available in iOS 5.0 and later.
Declared in `ALAssetsLibrary.h`.
7
<强> ALAssetsGroupAll 强>
与除了以外的所有组类型的ORing相同 ALAssetsGroupLibrary。
适用于iOS 4.0及更高版本。
在
中声明ALAssetsLibrary.h
。
您可以查看更多详情developer.apple
示例强>:
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:assetGroupEnumerator
failureBlock: ^(NSError *error) {
NSLog(@"Failure");
}];