簡體   English   中英

iOS Swift,無法使用NSPredicate通過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM