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

时间:2014-10-23 09:03:02

标签: ios swift nspredicate hidden

请考虑以下代码:

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")

有效!

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

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

2 个答案:

答案 0 :(得分:4)

好的......在黑客攻击和RnD之后......我找到了一个解决方法:

如上所述,以下内容产生了一个"不支持的谓词"错误:

options.predicate = NSPredicate(format: "hidden == YES")

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

options.includeHiddenAssets = true

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

答案 1 :(得分:0)

我会尝试:

options.predicate = NSPredicate(format: "hidden = %@", true)

如果要组合谓词,请尝试:

let compoundPredicate = NSCompoundPredicate.andPredicateWithSubpredicates([FirstPredicate, SecondPredicate])

options.predicate = compoundPredicate