2015-08-11 7 views
0
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]; 

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

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

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

Unsupported predicate in fetch options: mediaSubtype == 131072 

ответ

1

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

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

Моя ошибка я использовал в неправильном месте. – rishu1992

2

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

PHFetchOptions *options = [PHFetchOptions new]; 
// Disable slow motion videos 
options.predicate = [NSPredicate predicateWithFormat:@"NOT ((mediaSubtype & %d) != 0)", PHAssetMediaSubtypeVideoHighFrameRate]; 
0

Swift 4

let assetFetchOptions = PHFetchOptions() 
assetFetchOptions.predicate = NSPredicate(format: "NOT ((mediaSubtype & %d) != 0)", PHAssetMediaSubtype.videoHighFrameRate.rawValue) 
Смежные вопросы