PHCollection

  • 父类:PHObject

Photos资源的集合和集合列表的抽象超类(父类)。

一、概述

你不应该创建或直接使用这个类的实例。而是应该使用这个类的两个子类中的一个,PHAssetCollection或PHCollectionList。

  • 一个PHAssetCollection对象代表了一个照片或者视频资源的集合,比如说一个相簿,一个时刻,或者是共享相簿。
  • 一个PHCollectionList对象代表了一个包含了其他集合的集合,比如说一个包含许多相簿的文件夹或者一个包含一年所有时刻的集合。

苹果爸爸官网文档里面有这样一段:

重要
访问或修改照片库需要用户明确的授权。第一次调用下面“获取集合”中的任何一个方法时,Photos会自动提示用户授权。(或者你也可以调用PHPhotoLibrary的+ (void)requestAuthorization:(void(^)(PHAuthorizationStatus status))handler;方法在一个你需要的时刻提示用户授权。)
你的应用程序的Info.plist文件必须给NSPhotoLibraryUsageDescription 键提供一个值来告诉用户为什么你的用户要请求相册资源。iOS 10.0之后的系统中,如果你的应用的Info.plist文件中没有这个键值,那么你的应用将会直接崩溃。

所以告诉我们在Info.plist文件中一定要设置这个键值。

二、内容

1. 获取集合

+ (PHFetchResult *)fetchCollectionsInCollectionList:(PHCollectionList *)collectionList options:(nullable PHFetchOptions *)options;
  • collectionList PHCollectionList - 源集合列表
  • options PHFetchOptions - 对获取结果进行筛选和排序

从给定的集合列表中获取集合。如果没有,则返回一个空的PHFetchResult类型的实例。
返回的PHFetchResult对象包含了源集合列表中的所有集合,如果想要更明确的获取一些资源集合,可以设置options

+ (PHFetchResult *)fetchTopLevelUserCollectionsWithOptions:(nullable PHFetchOptions *)options;

照片库的顶层获取用户创建的相簿和文件夹。如果没有则返回一个空的PHFetchResult类型的实例。

2. 读取集合数据

@property (nonatomic, strong, readonly, nullable) NSString *localizedTitle;

集合的本机名称。
用户创建的相簿或文件夹则返回用户设置的名字,系统自带的文件夹则返回原始的系统默认的名字。

3. 确定集合容量

@property (nonatomic, assign, readonly) BOOL canContainAssets;

该集合是否可以包含资源。即该集合是照片的集合还是集合的集合。
如果返回YES,则该集合是PHAssetCollection类的实例。
如果返回NO,则该集合是PHCollectionList类的实例。

@property (nonatomic, assign, readonly) BOOL canContainCollections;

该集合是否可以包含集合。即该集合是照片的集合还是集合的集合。
如果返回YES,则该集合是PHCollectionList类的实例。
如果返回NO,则该集合是PHAssetCollection类的实例。

- (BOOL)canPerformEditOperation:(PHCollectionEditOperation)anOperation;

返回该集合是否支持给定的操作。
如果一个资源集合或者集合列表支持编辑,你可以创建一个PHAssetCollectionChangeRequest或者PHCollectionListChangeRequest对象代替一个PHPhotoLibrary的更改回调来提交变更。

PHCollectionEditOperation

typedef NS_ENUM(NSInteger, PHCollectionEditOperation) {
    PHCollectionEditOperationDeleteContent    = 1, // 删除集合中包含的内容,删除的东西会永久的从照片库中删除
    PHCollectionEditOperationRemoveContent    = 2, // 移除集合中包含的内容,但移除的东西不会从照片库中删除
    PHCollectionEditOperationAddContent       = 3, // 从其他的集合中添加内容
    PHCollectionEditOperationCreateContent    = 4, // 创建新的内容或者从其他的容器中复制内容到这个容器中
    PHCollectionEditOperationRearrangeContent = 5, // 改变内容的顺序
    PHCollectionEditOperationDelete           = 6, // 删除容器但不删除内容
    PHCollectionEditOperationRename           = 7, // 重命名容器的名字
} PHOTOS_AVAILABLE_IOS_TVOS(8_0, 10_0);

你可能感兴趣的:(PHCollection)