ios8上使用Photos自定义相册

项目需求:保存图片到自定义相册。

问题:iOS7之前AssetsLibrary 来操作相册的。假如通过代码在系统相册中创建一个名为@"你丫产品狗"的相册用来保存应用中用户手动保存的图片,当用户手动删除这个@"你丫产品狗"的相册并再次保存图片,打开系统相册,oh,god! 并没有再次创建@"你丫产品狗"的相册。这个时候产品就开始汪汪汪啦。不管怎么跟产品和测死扯皮,这问题一定要解决,而且作为一名开发者,自己也不能忍受这样的bug。 只能通过其他技术解决这个问题。iOS8后苹果提供了Photos,恶心的bug,fuck off!

查看苹果官方文档

找到一个例子 不用多想速度查看

 Listing 1Creating an asset and adding it to an album

ios8上使用Photos自定义相册_第1张图片

哈哈 好漂亮的代码 。无奈功力尚浅,没有看懂。。。  PHPhotoLibrary PHAssetChangeRequest PHAssetCollectionChangeRequest PHObjectPlaceholder albumChangeReques 上面所涉及的类都点进去,看看文档中怎么介绍说明的。翻看文档的时候发现了PHFetchResult 这个类  其中有如下说明


ios8上使用Photos自定义相册_第2张图片

还不太明白,是不是,OK, 写个demo试试。搜索下相关资料 然后在苹果文档中有这个几个方法- 

+ (PHFetchResult *)fetchTopLevelUserCollectionsWithOptions:(nullablePHFetchOptions*)options;(void)enumerateObjectsUsingBlock:(void(^)(ObjectType obj,NSUIntegeridx,BOOL*stop))block;  

- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void(^)(ObjectType obj,NSUIntegeridx,BOOL*stop))block;

- (void)enumerateObjectsAtIndexes:(NSIndexSet*)s options:(NSEnumerationOptions)opts usingBlock:(void(^)(ObjectType obj,NSUIntegeridx,BOOL*stop))block;

看着这里忍不住 打印输出 obj 是什么东西。

ios8上使用Photos自定义相册_第3张图片

其中titlte 是我们手动创建的相册。哈哈 有点眉目了。在输出窗口 (lldb)po exisitingCollection.tilte

error: property 'tilte' not found on object of type 'PHAssetCollection *'

error: 1 errors parsing expression

(lldb)

并不可以输出,看看文档 localizedTitle  也就是我们手动创建的相册,可以根据这个特性来检测 相册中已经存在@"你丫产品狗"的相册,这样及可以解决反复安装应用后创建多个自定义相册的问题。 再次用联想输出发现   33C5CE29-6366-4D45-BB0D-406D22360069/L0/040 是localIdentifier  识别的唯一标识。

demo

你可能感兴趣的:(ios8上使用Photos自定义相册)