NSPredicate, чтобы исключить замедленное видео из PHFetchResults

NSString *predicateFormat = [NSString stringWithFormat: @"mediaSubtype = %zd", PHAssetMediaSubtypeVideoHighFrameRate];
    NSPredicate *predicate = [NSPredicate predicateWithFormat: predicateFormat];

    PHFetchOptions *fetchOptions = [PHFetchOptions new];
    fetchOptions.predicate = predicate;

    PHFetchResult *userAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumVideos options:fetchOptions];

Это мой код для извлечения видео, которое исключает замедленное видео. Но я получаю следующую ошибку. Это не работает, даже если я так делаю,

PHFetchOptions *fetchOptions = [PHFetchOptions new];
fetchOptions.predicate = [NSPredicate predicateWithFormat:@"(mediaSubtype & %d) == 0", PHAssetMediaSubtypeVideoHighFrameRate];

Кто-нибудь, пожалуйста, помогите. Заранее спасибо.

Unsupported predicate in fetch options: mediaSubtype == 131072

3 ответа

Решение

Попробуй это:

fetchOptions.predicate = [NSPredicate predicateWithFormat:@"(mediaSubtype != %d)", PHAssetMediaSubtypeVideoHighFrameRate];

Swift 4

let assetFetchOptions = PHFetchOptions()
assetFetchOptions.predicate = NSPredicate(format: "NOT ((mediaSubtype & %d) != 0)", PHAssetMediaSubtype.videoHighFrameRate.rawValue)

Чтобы исключить замедленное видео, единственный предикат, который работал для меня, это:

PHFetchOptions *options = [PHFetchOptions new];
// Disable slow motion videos
options.predicate = [NSPredicate predicateWithFormat:@"NOT ((mediaSubtype & %d) != 0)", PHAssetMediaSubtypeVideoHighFrameRate];
Другие вопросы по тегам