按顺序获取 PHAsset

Posted

技术标签:

【中文标题】按顺序获取 PHAsset【英文标题】:Fetch PHAssets in sequence 【发布时间】:2020-09-01 23:21:46 【问题描述】:

我正在尝试通过传递本地标识符数组从照片库中获取资产。但是输出的顺序不同。我的应用要求我按顺序获取它们。这就是我使用它的方式

let fetchedResults = PHAsset.fetchAssets(withLocalIdentifiers: videosInLibrary, options: nil)
fetchedResults.enumerateObjects  (asset:PHAsset , count:Int, stop:UnsafeMutablePointer<ObjCBool>) in

我们可以做些什么来按我传递的本地标识符的顺序获取它们。

【问题讨论】:

您为什么不将所有生成的 PHAsset 累积到一个数组中,然后按照您喜欢的顺序放置它? 我最终也做了同样的事情。谢谢。 【参考方案1】:

它是数据库,所以按存储返回,但你可以在本地完成:

let fetchedResults = PHAsset.fetchAssets(withLocalIdentifiers: videosInLibrary, options: nil)

var tmpCache = [String: PHAsset]()
fetchedResults.enumerateObjects  (asset:PHAsset , count:Int, stop:UnsafeMutablePointer<ObjCBool>) in
    tmpCache[asset.localIdentifier] = asset


let results = videosInLibrary.compactMap  tmpCache[$0] 

【讨论】:

以上是关于按顺序获取 PHAsset的主要内容,如果未能解决你的问题,请参考以下文章

我想按顺序获取recyclerview

Java 反射:按声明顺序获取字段和方法

Firebase - 按顺序获取数据列表(最后一个数据)

使用 Node.JS,如何按时间顺序获取文件列表?

cProfiler:如何按执行顺序获取统计信息?

如何按使用 fetchAssets 添加的日期顺序获取 PHAsset