如何将 PHAsset 存储到核心数据中

Posted

技术标签:

【中文标题】如何将 PHAsset 存储到核心数据中【英文标题】:How to store PHAsset into Core Data 【发布时间】:2018-10-25 07:26:51 【问题描述】:

我正在从照片和 iCloud 中选择图像。我想将 PHAsset 存储到核心数据中。我们?

在此之前,我存储的是本地图片 URL,但是一些本地 url 是私有的。所以我无法获取图片。

【问题讨论】:

CoreData 有Transformable 类型,你试过了吗? @QuocNguyen 当我使用 Transformable 类型时,它会出现日志“由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'-[PHAsset encodeWithCoder:]:无法识别的选择器发送到实例 0x149ec7770'” 【参考方案1】:

一种可能的方法是将图像转换为数据并将该数据添加到您的 managedObject。 X 中属性的属性类型应设置为“二进制数据”。

否则(例如,如果您想与照片或 iCloud 中的原始文件进行交互)您可以保存 本地标识符,然后使用

fetchAssetsWithLocalIdentifiers

从您的 managedObject 接收到 identifier 后再次获取图像。

希望对你有所帮助!

【讨论】:

如何再次使用 fetchAssetsWithLocalIdentifiers 获取 PHAsset? 如developer.apple.com/documentation/photokit/phasset/… 所示,以标识符为参数的函数 fetchAssets() 返回您要查找的 PHAsset。

以上是关于如何将 PHAsset 存储到核心数据中的主要内容,如果未能解决你的问题,请参考以下文章

使用本地图像 URL 或 UIIMage 获取 PHAsset?

如何在 Swift 5.2 中使用 PHAsset.fetchAssets(withLocalIdentifiers:) 从照片库中检索照片?

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

如何检索 PHAsset 的元数据?

具有优化 iPhone 存储的 PHAsset

如何从 PHAsset 获取图像 URL?是不是可以使用 PHAsset URL 将图像保存到文档目录?