2016-06-27 1 views
0

Le code ci-dessous est ce que j'ai déjà essayé. Ce que je souhaite accomplir est d'aller chercher toutes les photos de l'appareil. Actuellement, seulement quelques-unes sont récupérées. Comment modifier le code de manière à charger toutes les images de l'appareil?Comment extraire toutes les photos de la bibliothèque

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

vous cherchez seulement à la première valeur du résultat. Pourquoi ne pas regarder toutes les valeurs dans le résultat? Avez-vous vérifié le 'count'? –

+0

Vous récupérez également des collections lorsque vous semblez être intéressé par les ressources. – rickster

+0

comment puis-je récupérer toutes les valeurs ?? désolé je suis nouveau à ce –

Répondre

5

Mise à jour la réponse de David pour iOS 10 & Swift 3.0:

Demander la permission de l'appareil pour accéder aux photos:

Ajoutez la valeur suivante à votre info.plist

Confidentialité - Photothèque Description de l'utilisation

Et fournissez une chaîne qui est montrée à l'utilisateur.

Demande toutes les images:

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

Cela fonctionne, mais il va planter si vous n'ajoutez pas "Confidentialité - Description de l'utilisation de la photothèque" à info. plist –

+0

@MrStanev Cela est effectivement noté en haut de la réponse sous "Demander la permission de l'appareil pour accéder aux photos" – CodeBender

+0

@CodeBender Est-il possible d'aller chercher avec limite? Pouvons-nous faire de la pagination? – Dipang

0

Toutes les photos sont assez faciles, mais vous devez d'abord vous assurer que vous êtes autorisé. Voici un code simple à démontrer:

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") 
     } 
    } 

Sur mon téléphone, ceci renvoie 25750 éléments. Sur un simulateur frais, cela devrait donner 5 images.

+0

quel est le type de toutes les photos ?? –

+0

Si vous entrez le code et que vous cliquez sur la fonction fetchAssetsWithMediaType en maintenant la touche Ctrl enfoncée, vous verrez qu'il s'agit d'un PHFetchResult. https://developer.apple.com/library/ios/documentation/Photos/Reference/PHFetchResult_Class/index.html –