解决iOS8.0以上系统下没法经过代码建立被删除过的同名相册 ( iOS 8 Photos framework: Create a albums with iOS8 )

问题描述:app

在苹果的 iOS8.0以上, 当你建立完一个相册, 例如名为"Rd", 而后在相册中手动删除了这个"Rd"相册, 再次经过代码spa

#import <AssetsLibrary/ALAssetsLibrary.h>
 ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];                                                                                                                                                                                                           
[assetsLibrary addAssetsGroupAlbumWithName:@"Rd" resultBlock:^(ALAssetsGroup *group) {   [groups addObject:group]; }
failureBlock:nil];

以上代码在 iOS 8.0+ 从未建立过 "Rd" 这个相册的 iPhone 或者 iPad 上面能够成功建立相册"Rd" ;code

在 iOS 8.0 如下是不管什么状况下均可以建立;orm

可是在iOS 8.0+ 上若是是已经建立过 "Rd" 这个相册, 而后 "Rd" 相册 被手动删除后的 iPhone 或者 iPad 上面, 代码执行后 group 是 nil ;blog

 

问题分析:ip

我的感受是跟 iOS 8.0 以后, 相册新增了 Recently Deleted (最近删除) 这个功能, 致使咱们在相册里边手动删除 "Rd"相册 是并无彻底删除, 致使建立相册虽然成功, 但却为 nil ,由于建立的相册仍是处于 Recently Deleted 的状态;文档

 

解决方案:get

既然发现没法建立后, 查阅官方文档, 发现这么一段话it

(在 iOS 8.0 后, 使用the Photos framework 代替 the Assets Library framework , The Photos framework 提供更特点和更好的表现 在使用 photo library 工做的时候)io

苹果官方Photo Framework例子:

https://developer.apple.com/devcenter/download.action?path=/wwdc_2014/wwdc_2014_sample_code/exampleappusingphotosframework.zip

仔细挖掘下而后就能解决啦~

iOS 8.0+ 使用Photos framework 建立相册代码

#import <Photos/Photos.h
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^
{
  [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:@"Rd"];
} completionHandler:^(BOOL success, NSError *error) 
{
  if (!success) {
    NSLog(@"Error creating album: %@", error);
  }
}];
相关文章
相关标签/搜索