![](/img/trans.png)
[英]How to to filter by media subtype using NSPredicate with PHFetchOptions
[英]IOS Swift, can not filter by hidden photos in PHFetchOptions using NSPredicate
考慮以下代碼:
let options = PHFetchOptions()
options.predicate = NSPredicate(format: "hidden == YES")
let albumAssetCollections:PHFetchResult! = PHAssetCollection.fetchAssetCollectionsWithLocalIdentifiers([currentAlbumLID], options: nil)
let albumCollection:AnyObject! = albumAssetCollections.firstObject
albumPhotoAssets = PHAsset.fetchAssetsInAssetCollection(albumCollection as PHAssetCollection, options: options)
返回錯誤:
'NSInvalidArgumentException',原因:“獲取選項中不支持的謂詞:hidden == 1”
但是,如果我替換:
options.predicate = NSPredicate(format: "hidden == YES")
帶有:
options.predicate = NSPredicate(format: "favorite == YES")
有用!
我不明白為什么會收到這樣的錯誤。 “收藏夾”和“隱藏”屬性都是布爾類型,以相同的方式記錄,因此,它們在NSPredicate聲明中的行為應相同。
我在這里做錯了什么...還是swift / xCode的某些錯誤? 我認為這是我的錯誤。
好吧...黑客和RnD之后...我找到了一種解決方法:
如前所述,以下產生了“不受支持的謂詞”錯誤:
options.predicate = NSPredicate(format: "hidden == YES")
但是,如果我將以上內容替換為:
options.includeHiddenAssets = true
提取將按預期工作,並返回隱藏的照片資產。
我會嘗試:
options.predicate = NSPredicate(format: "hidden = %@", true)
如果要合並謂詞,請嘗試:
let compoundPredicate = NSCompoundPredicate.andPredicateWithSubpredicates([FirstPredicate, SecondPredicate])
options.predicate = compoundPredicate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.