I am trying to reproduce the native iOS8 photopicker using Photos framework. I got a problem with the sorting.
Lets say I do following:
- I edit a photo in Camera+ app and save it back to gallery.
- I favourite another photo.
In the native photopicker:
- All photos (even the one I favourited) will be sorted by
creationDate
- The photo I edited and saved will be down at the bottom since it was the last one I changed. The original will be at its original place according to its creation date.
In my app I do following:
PHFetchOptions *options = [PHFetchOptions new];
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
options.predicate = [NSPredicate predicateWithFormat:@"mediaType == %ld", PHAssetMediaTypeImage];
PHFetchResult *fetchResult = [PHAsset fetchAssetsInAssetCollection:self.assetCollection options:options];
I sort in creationDate
and get following result:
- All photos (even the one I favourited) will be sorted by
creationDate
- The photo I edited will be just after at it's original according to it's original creation date.
Then I change my query so instead of sorting on creationDate
, I sort on modificationDate
. I get following result:
- All photos are in general in order almost same as
creationDate
- The photo I edited will be at the bottom. This is what I want and like in the native app.
- The favourited photo will also be at the bottom :-(
So it seeme Apple change modificationDate
on favourite action and probably also on other kind of actions and this mess up the sorting of the photos.
How is it possible to get exactly the sorting Apple use in its native app? Maybe some clever use of NSSortDescriptor
?