Я пытаюсь воспроизвести собственный фотосборщик iOS8, используя фреймворк Photos. У меня возникла проблема с сортировкой.
Допустим, я делаю следующее:
- Я редактирую фотографию в приложении «Камера+» и сохраняю ее обратно в галерею.
- Мне нравится другое фото.
В родном фотопикере:
- Все фотографии (даже те, которые я добавила в избранное) будут отсортированы по
creationDate
- Фотография, которую я отредактировал и сохранил, будет внизу, так как она была последней, которую я изменил. Оригинал будет находиться на своем первоначальном месте в соответствии с датой его создания.
В моем приложении я делаю следующее:
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];
Я сортирую creationDate
и получаю следующий результат:
- Все фотографии (даже те, которые я добавила в избранное) будут отсортированы по
creationDate
- Фотография, которую я отредактировал, будет сразу же после оригинала в соответствии с первоначальной датой создания.
Затем я изменяю свой запрос, поэтому вместо сортировки по creationDate
я сортирую по modificationDate
. Я получаю следующий результат:
- Все фото в целом по порядку почти как
creationDate
- Фотография, которую я отредактировал, будет внизу. Это то, что я хочу и люблю в родном приложении.
- Любимая фотография также будет внизу :-(
Таким образом, кажется, что Apple меняет modificationDate
на любимом действии и, возможно, также на других действиях, и это искажает сортировку фотографий.
Как можно получить именно ту сортировку, которую Apple использует в своем родном приложении? Может быть, какое-то умное использование NSSortDescriptor
?