Ошибка: «Неподдерживаемый предикат в параметрах выборки: mediaType == 2»
Я пытаюсь использовать smartAlbum для создания массива только видео или только фотографий или обоих.
Вы можете увидеть мой код ниже:
PHFetchResult *collectionList = [PHCollectionList fetchMomentListsWithSubtype:PHCollectionListSubtypeMomentListCluster options:nil];
PHFetchOptions *options = nil;
if (self.xSelected) {
options = [[PHFetchOptions alloc] init];
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
options.predicate = [NSPredicate predicateWithFormat:@"mediaType = %d",PHAssetMediaTypeImage];
}
if (self.ySelected) {
options = [[PHFetchOptions alloc] init];
options.predicate = [NSPredicate predicateWithFormat:@"mediaType = %d",PHAssetMediaTypeVideo];
}
[collectionList enumerateObjectsUsingBlock:^(PHCollectionList *collection, NSUInteger idx, BOOL *stop) {
PHFetchResult *momentsInCollection = [PHAssetCollection fetchMomentsInMomentList:collection options:options];
for (id moment in momentsInCollection) {
PHAssetCollection *castedMoment = (PHAssetCollection *)moment;
[_smartAlbums insertObject:castedMoment atIndex:0];
}
}];
Это, однако, постоянно ломается на первой линии внутриblock
и дает следующую ошибку:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unsupported predicate in fetch options: mediaType == 2'
Я сделал небольшое исследование и нашел этоссылка на сайт.
Мне интересно, если это ошибка Apple, или это просто что-то не так с моим кодом.
Похоже, это сработало для людей, которые ссылались на этоответ, что так странно, потому что это одно и то же.
Заранее спасибо,
Аниш
РЕДАКТИРОВАТЬ:
Я думаю, что нашел ответВот в документации Apple. Похоже, MediaType является ключом только дляPHAsset
и неPHAssetCollection
, Так что теперь я думаю, вопрос в том, как получитьPFAssetCollection
только с видео или только изображениями.