2016-06-27 37 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 –

相关问题