IOS Swift,无法使用 NSPredicate 通过 PHFetchOptions 中的隐藏照片进行过滤

Jim*_*imi 1 hidden nspredicate ios swift

考虑以下代码:

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)
Run Code Online (Sandbox Code Playgroud)

返回错误:

'NSInvalidArgumentException',原因:'获取选项中不支持的谓词:隐藏== 1'

但是,如果我更换:

options.predicate = NSPredicate(format: "hidden == YES")
Run Code Online (Sandbox Code Playgroud)

和:

options.predicate = NSPredicate(format: "favorite == YES")
Run Code Online (Sandbox Code Playgroud)

有用!

我不明白为什么我会收到这样的错误。“最喜欢的”和“隐藏的”属性都是布尔值,以相同的方式记录,因此,它们在 NSPredicate 声明中的行为应该相同,不是吗?

我在这里做错了什么...或者这是 swift/xCode 的一些错误?我认为这是我的错误。

Jim*_*imi 5

好吧...经过一番修改和 RnD...我找到了一个解决方法:

如前所述,以下内容产生了“不支持的谓词”错误:

options.predicate = NSPredicate(format: "hidden == YES")
Run Code Online (Sandbox Code Playgroud)

但是,如果我用以下内容替换上面的内容:

options.includeHiddenAssets = true
Run Code Online (Sandbox Code Playgroud)

提取按预期工作,返回隐藏的照片资源。