如何使用NSPredicate
與PHFetchOptions
按媒體子類型進行過濾? 我試圖排除慢鏡頭(高幀率)和時間推移視頻。當我嘗試使用PHFetchOptions
的predicate
字段時,我總是收到奇怪的結果。如何使用帶有PHFetchOptions的NSPredicate按媒體子類型進行過濾
我的手機有一堆(120多個)普通視頻和一個慢鏡頭視頻。當我從Apple's docs運行示例時,我得到了正確的結果:1個慢速視頻。
PHFetchOptions *options = [PHFetchOptions new];
options.predicate = [NSPredicate predicateWithFormat:@"(mediaSubtype & %d) != 0 || (mediaSubtype & %d) != 0", PHAssetMediaSubtypeVideoTimelapse, PHAssetMediaSubtypeVideoHighFrameRate];
但我想排除慢莫,而不是選擇它。但是,如果我否定的過濾條件,我得到零個結果反饋:
options.predicate = [NSPredicate predicateWithFormat:@"(mediaSubtype & %d) == 0", PHAssetMediaSubtypeVideoHighFrameRate];
<PHFetchResult: 0x1702a6660> count=0
令人困惑的是,蘋果的文檔列表字段mediaSubtypes
的名稱(以「S」),而他們的樣品謂詞是在mediaSubtype
過濾(沒有「s」)。
試圖在mediaSubtypes
濾波器產生一個錯誤:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't do bit operators on non-numbers'
有沒有人能夠使這個謂詞的正面還是反面?
加一。我們有類似的問題。還沒有修復。 –
同樣的問題在這裏 – user1055568