【问题标题】:IOS Swift, can not filter by hidden photos in PHFetchOptions using NSPredicateIOS Swift,无法使用 NSPredicate 过滤 PHFetchOptions 中的隐藏照片
【发布时间】:2014-10-23 09:03:01
【问题描述】:

考虑以下代码:

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',原因:'获取选项中不支持的谓词:隐藏 == 1'

但是,如果我替换:

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

与:

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

有效!

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

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

【问题讨论】:

    标签: ios swift nspredicate hidden


    【解决方案1】:

    好的...经过修改和 RnD... 我找到了解决方法:

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

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

    但是,如果我将上面的内容替换为:

    options.includeHiddenAssets = true
    

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

    【讨论】:

    • 您的答案在 iOS 10 中仍然正确
    【解决方案2】:

    我会尝试:

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

    如果你想组合谓词,试试:

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

    【讨论】:

    • 谢谢...我尝试了上述两种方法,但仍然收到相同的错误:“提取选项中不支持的谓词:隐藏 == 1”。我真的不明白为什么“隐藏”无效。根据苹果文档,应该是:developer.apple.com/library/ios/documentation/Photos/Reference/…
    • NSPredicate(format: "hidden = %@", true) 会出现同样的错误?
    • 是的。在 iOS 模拟器和作为测试设备连接的 iPhone 6 上。请记住,如果我将“隐藏”属性切换为“最喜欢”,它会按预期工作。至少可以说这真的很奇怪。
    • 和你的隐藏和收藏的NSManagement类真的一样吗?尝试清理您的项目。
    • 感谢您的帮助。我找到了解决方法,应该在上面发布。
    猜你喜欢
    • 2017-01-10
    • 2015-02-10
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多