Skip to content

Instantly share code, notes, and snippets.

@Koze
Last active June 4, 2025 05:54
Show Gist options
  • Select an option

  • Save Koze/f8b3adf542c5dae6e9cf to your computer and use it in GitHub Desktop.

Select an option

Save Koze/f8b3adf542c5dae6e9cf to your computer and use it in GitHub Desktop.
Getting Camera Roll with Photos.framework
PHFetchResult *result = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum
subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary
options:nil];
PHAssetCollection *assetCollection = result.firstObject;
NSLog(@"%@", assetCollection.localizedTitle);
// Camera Roll
@mashers

mashers commented Apr 13, 2017

Copy link
Copy Markdown

Thank you for this. Something which should be so simple ended up being utterly obtuse, but this worked perfectly.

@dodikk

dodikk commented May 19, 2017

Copy link
Copy Markdown

I'm getting a assetCollection == nil on iPad mini iOS 10.3.1

(lldb) po query
<PHUnauthorizedFetchResult: 0x170135c20> count=0
    private static func getCameraRollAlbum() -> PHAssetCollection?
    {
        // https://gist.github.com/Koze/f8b3adf542c5dae6e9cf
        //
        let query = PHAssetCollection.fetchAssetCollections(with: .smartAlbum,
                                                         subtype: .smartAlbumUserLibrary,
                                                         options: nil)
        let result: PHAssetCollection? = query.firstObject
        print("[nmessenger] [debug] camera roll name" + (result?.localizedTitle ?? ""))
        
        return result
    }

@Abhishek9634

Copy link
Copy Markdown

Hello Is there any way to get all albums ?

@johnmurphy01

Copy link
Copy Markdown

If iCloud is turned on, Camera Roll is not returned by this method. It instead returns All Photos. Is there any way to get Camera Roll asset collection when iCloud is turned on?

@akultomar17

Copy link
Copy Markdown

pretty late for @dodikk I guess but anyone else getting assetCollection == nil needs to add permissions in their info.plist

<key>NSPhotoLibraryUsageDescription</key>
<string>My description about why I need this capability</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>This app requires access to the photo library.</string>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment