解決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);
  }
}];
相關文章
相關標籤/搜索