2016-06-27 9 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

вы только глядя на первое значение в результате. Почему бы не посмотреть на все значения в результате? Вы проверили 'count'? –

+0

Вы также получаете коллекции, когда вам кажется, что вас интересуют активы. – rickster

+0

как я могу получить все значения? извините, я новичок в этом –

ответ

5

Обновленного ответ Давида для прошивки 10 & Swift 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

что такое allPhotos ?? –

+0

Если вы вводите код и управляете щелчком по функции fetchAssetsWithMediaType, вы увидите, что это PHFetchResult. https://developer.apple.com/library/ios/documentation/Photos/Reference/PHFetchResult_Class/index.html –

Смежные вопросы