Я пытаюсь использовать 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 или если что-то не так с моим кодом.
Похоже, что это сработало для людей, которые ссылались на этот ответ, что так странно, потому что в основном это одно и то же.
Спасибо заранее,
Аниш
EDIT:
Я думаю, что я нашел ответ здесь в Apple Documentation. Похоже, mediaType - это ключ только для PHAsset
, а не PHAssetCollection
. Итак, теперь я думаю, вопрос заключается в том, как получить PFAssetCollection
только видео или только изображения.