2016-06-27 34 views
0

下面顯示的代碼是我已經嘗試過的。我希望獲得的是從設備中獲取所有照片。目前只有少數人被抓取。如何修改代碼以便從設備加載所有圖像?如何從庫中獲取所有照片

let fetchOptions = PHFetchOptions() 

let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.Moment, subtype: .Any, options: fetchOptions) 

if let first_Obj:AnyObject = collection.firstObject 
{ 
    self.assetCollection = first_Obj as! PHAssetCollection 
} 
+0

你只看着結果的第一個值。爲什麼不看結果中的所有值?你檢查過「計數」了嗎? –

+0

當您似乎對資產感興趣時,您也正在提取集合。 – rickster

+0

我如何獲取所有值?對不起,我是新來的這個 –

回答

5

更新大衛的答案iOS的10 &雨燕3.0:從設備

請求權限訪問的照片:

以下值添加到您的info.plist

隱私 - 照片庫使用說明

並提供顯示給用戶的字符串。

請求所有圖片:

PHPhotoLibrary.requestAuthorization { (status) in 
     switch status { 
     case .authorized: 
      print("Good to proceed") 
      let fetchOptions = PHFetchOptions() 
      let allPhotos = PHAsset.fetchAssets(with: .image, options: fetchOptions) 
      print("Found \(allPhotos.count) images") 
     case .denied, .restricted: 
      print("Not allowed") 
     case .notDetermined: 
      print("Not determined yet") 
     } 
    } 
+0

這會起作用,但如果您不在信息中添加「隱私 - 照片庫使用說明」,它會崩潰。 plist –

+0

@MrStanev這實際上在「設備訪問照片的請求許可」下的答案的頂部標註了 – CodeBender

+0

@CodeBender是否有可能獲取限制?我們可以做分頁嗎? – Dipang

0

所有的照片都非常簡單,但您需要確保您先獲得授權。這裏有一些簡單的代碼來演示:

PHPhotoLibrary.requestAuthorization { (status) in 
     switch status 
     { 
     case .Authorized: 
      print("Good to proceed") 
      let fetchOptions = PHFetchOptions() 
      let allPhotos = PHAsset.fetchAssetsWithMediaType(.Image, options: fetchOptions) 
      print("Found \(allPhotos.count) images") 
     case .Denied, .Restricted: 
      print("Not allowed") 
     case .NotDetermined: 
      print("Not determined yet") 
     } 
    } 

在我的電話上返回25750項。在新的模擬器上,這應該產生5個圖像。

+0

所有的照片類型是什麼? –

+0

如果輸入代碼,並按住Ctrl鍵並單擊fetchAssetsWithMediaType函數,您將看到它是PHFetchResult。 https://developer.apple.com/library/ios/documentation/Photos/Reference/PHFetchResult_Class/index.html –

相關問題