5.ALAssetsFilter:相当于过滤器,有三个方法,allPhotos:获取相册中所有的照片.allVideos:获取相册中所有的视频.allAssets:获取照片库中的相册,通过ALAssetsGroup类中的setAssetsFilter来调用
三、ALAssetsLibrary资源库对象
ALAssetsLibrary类用来构建资源库对象,这个对象用来整体操作系统的相册资源,在使用它之前我们可以使用下面的方法来获取用户的授权情况:
+ (ALAuthorizationStatus)authorizationStatus;
ALAuthorizationStatus枚举定义了用户的授权情况,定义如下:
typedef NS_ENUM(NSInteger, ALAuthorizationStatus) {
ALAuthorizationStatusNotDetermined, // 用户尚未选择是否授权
ALAuthorizationStatusRestricted, //应用尚未授权
ALAuthorizationStatusDenied), // 用户拒绝授权
ALAuthorizationStatusAuthorized // 用户已经授权
}
如果用户尚未授权过,那么任何访问操作都将触发授权机制。
资源库中的资源数据是以组的方式进行存储,下面代码示例了获取资源组的方式:
_library = [[ALAssetsLibrary alloc]init];
[_library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group) { // 遍历相册还未结束
// 设置过滤器
[group setAssetsFilter:[ALAssetsFilter allPhotos]];
if (group.numberOfAssets) {
NSLog(@"%@",group);
}
} else { // 遍历结束(当group为空的时候就意味着结束)
NSLog(@"没有相册列表了");
}
} failureBlock:^(NSError *error) {
NSLog(@"失败");
}];
上面示例的枚举函数用来根据参数类型获取资源组,ALAssetsGroupType参数决定获取组的类型,可选值枚举如下:
enum {
ALAssetsGroupLibrary ,// 编辑库
ALAssetsGroupAlbum ,//相册库
ALAssetsGroupEvent ,//事件库
ALAssetsGroupFaces ,// iTunes同步
ALAssetsGroupSavedPhotos ,// 保存的相片
ALAssetsGroupPhotoStream ,// The PhotoStream album.
ALAssetsGroupAll ,//所有库
};










