問題描述: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例子:
仔細挖掘下而後就能解決啦~
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); } }];