码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-04-16 19:32:13      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:

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

#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" ;

在 iOS 8.0 以下是无论什么情况下都可以创建;

但是在iOS 8.0+ 上如果是已经创建过 "Rd" 这个相册, 然后 "Rd" 相册 被手动删除后的 iPhone 或者 iPad 上面, 代码执行后 group 是 nil ;

 

问题分析:

个人感觉是跟 iOS 8.0 之后, 相册新增了 Recently Deleted (最近删除) 这个功能, 导致我们在相册里边手动删除 "Rd"相册 是并没有完全删除, 导致创建相册虽然成功, 但却为 nil ,因为创建的相册还是处于 Recently Deleted 的状态;

 

解决方案:

既然发现无法创建后, 查阅官方文档, 发现这么一段话

技术分享

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

苹果官方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);
  }
}];

 

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

标签:

原文地址:http://www.cnblogs.com/cai-rd/p/4432908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!