【问题标题】:Fetching non-empty Smart Albums获取非空智能相册
【发布时间】:2017-12-01 20:25:08
【问题描述】:

使用 Swift4 / ios11,我正在尝试从设备中获取非空智能相册的集合:

    let smartAlbumOptions = PHFetchOptions()
    smartAlbumOptions.predicate = NSPredicate(format: "estimatedAssetCount > 0")
    smartAlbums = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: .albumRegular, options: smartAlbumOptions)

这是我在许多示例中看​​到的范式,但从未指定 .smartAlbum。问题是estimatedAssetCount > 0 谓词总是返回零结果:

<PHFetchResult: 0x1c40fce00> count=0 

而如果谓词是“estimatedAssetCount >= 0”,则提取返回所有智能相册为空,否则返回。我是否缺少与智能相册有关的内容?

【问题讨论】:

    标签: ios swift photokit


    【解决方案1】:

    根据 Apple 的文档,estimatedAssetCount 可能不准确,如果不可用,则返回 NSNotFound。我怀疑这就是发生在你身上的事情。在这种情况下,我建议继续使用 Apple 的文档建议,只获取所有智能相册,并在获取它们之后根据(现在准确的)count 属性对其进行过滤。

    【讨论】:

    • 确实,我知道estimatedAssetCount 是不准确的,但总是返回零似乎牵强,甚至毫无价值。 NSNotFound 将被评估为一个非零值,如果它已经返回。这么多人一直在使用这种技术似乎很奇怪,但对于智能相册来说似乎很糟糕。当然集合也是不可变的,所以我认为后取过滤器也不起作用,但我会尝试一下,非常感谢您的快速回复!
    • 你说得对,NSNotFound 将被评估为非零,但它不会被评估为 > 0。我想我同意总是返回零似乎很奇怪,但也许有一些潜在的智能相册会出现这种行为的原因。
    • 如果过程中没有撞头,就不是苹果了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2021-06-16
    • 2019-05-27
    • 2015-02-28
    • 1970-01-01
    • 2021-07-08
    相关资源
    最近更新 更多