the code above only fetches smart albums. if you also need albums created manually from user, you must fetch them, too:

PHFetchResult *userCollections = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil];

and if you need sync’d albums:

PHFetchResult *syncedAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:nil];

user collections tested, sync’d collections not tested yet because I don’t need them