问题描述:
在苹果的 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例子:
仔细挖掘下然后就能解决啦~
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); } }];
时间: 2024-10-14 00:50:42