iosswiftphotos

How to fetch all photos from library


The code shown below is what i've tried already.What I wish to achieve is to fetch all the photos from the device.Currently only a few are being fetched.How to modify the code so as to load all the images from device?

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
}

Solution

  • Updated David's answer for iOS 10+ & Swift 4.x/3.x:

    Request permission from the device to access photos:

    Add the following value to your info.plist

    Privacy - Photo Library Usage Description

    And provide a string that is shown to the user.

    Request all images:

    PHPhotoLibrary.requestAuthorization { status in
        switch status {
        case .authorized:
            let fetchOptions = PHFetchOptions()
            let allPhotos = PHAsset.fetchAssets(with: .image, options: fetchOptions)
            print("Found \(allPhotos.count) assets")
        case .denied, .restricted:
            print("Not allowed")
        case .notDetermined:
            // Should not see this when requesting
            print("Not determined yet")
        }
    }