iOS 8 照片框架:从 PHAsset 获取文件名

Posted

技术标签:

【中文标题】iOS 8 照片框架:从 PHAsset 获取文件名【英文标题】:iOS 8 Photos framework: Get file name from PHAsset 【发布时间】:2015-10-23 15:33:46 【问题描述】:

有什么方法可以从 ios 8 中的 PHAsset 对象中获取文件名,就像 ALAsset 的 defaultRepresentation 提供文件名一样?

// For ALAsset
let defaultRepresentation = self.asset.defaultRepresentation()
let filename = defaultRepresentation.filename()

注意:这可以在 iOS9 中使用 PHAssetResource 类来完成。但我正在寻找 iOS8 和记录的方法(请不要使用未记录的 API)。

我确实在SO上找到了同样的问题,但没有找到令人信服的答案,所以我想单独问。

任何指针将不胜感激。

【问题讨论】:

【参考方案1】:

有一个名为 PHAsset.filename 的私有 API。

let filename = phAsset.value(forKey: "filename") as! String

你会得到类似“IMG_193.PNG”的东西。

【讨论】:

【参考方案2】:

在 iOS 8 上没有记录的方法可以做到这一点。 您唯一“可能”使用的是PHImageManager 的方法requestImageDataForAsset: 的信息字典中返回的PHImageFileURLKey。但即便如此,也没有完整记录。

【讨论】:

谢谢。我也没有找到任何其他方法,所以我在请求全尺寸图像时使用了 PHImageFileURLKey 。但是当我通过 requestImageForAsset(_:targetSize:contentMode:options:resultHandler:) 获取缩略图时,信息字典中没有这样的键。您知道在请求缩略图时如何获取文件名吗?我需要它来设置辅助功能提示。

以上是关于iOS 8 照片框架:从 PHAsset 获取文件名的主要内容,如果未能解决你的问题,请参考以下文章

获取 PHAsset 的本地文件路径

如何从 MacOS 的照片库中获取所有 PHAsset

如何为从照片框架获取的 PHAsset 添加分页?

照片框架 - 如何从 PHAsset 获取图像的 CLLocation?

PHAsset 无法获取

iOS 8 从 PHAsset 快速加载图像