如何将 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:) 从照片库中检索照片?