美文网首页
当有一个需求需要本地缓存选择的照片数组时

当有一个需求需要本地缓存选择的照片数组时

作者: 丶皮蛋菌 | 来源:发表于2020-09-07 09:18 被阅读0次

有这样一个需求,当需要用coredata本地缓存选择的图片数组时,coredata不支持数组格式储存,只能用Transformable类型储存,但是,Transformable类型可以储存数组,数组中可以是UIImage,但是不能储存数组中是PHAsset类型的数据,如果不储存,那么进行回显,并且进入相册又需要显示记录的选择照片,那么就无法实现,通过百度,查到以为大佬给出的具体方案,进行记录

首先我们需要保存PHAsset的localIdentifier属性,但是点到PHAsset的头文件里面会发现没有localIdentifier这个属性,这个时候你再往父类里点,也就是PHObject里,就会发现有了。

NSString *localIdentifier = asset.localIdentifier;

这样,把localIdentifier存在数组中,就可以把数组存入本地了。
那么读取本地数据时,如何使用呢?
for循环遍历数组,获取到localIdentifier

PHFetchResult *fetchResult = [PHAsset fetchAssetsWithLocalIdentifiers:@[str] options:nil];
PHAsset *asset = fetchResult.firstObject;

得到asset,就可以进行回显了。

有时候用户会把手机上的照片删除了,如果删除的包含APP里储存的PHAsset,那么这种情况需要进行错误处理,不然会导致crash。在这种情况下使用fetchAssetsWithLocalIdentifiers这个方法返回的PHFetchResult为空,所以如下判断即可:

PHAsset *asset = fetchResult.firstObject;
if(!asset) {
    // 处理照片删除的情况
}

摘录自:https://blog.csdn.net/weixin_34177064/article/details/91428942

相关文章

网友评论

      本文标题:当有一个需求需要本地缓存选择的照片数组时

      本文链接:https://www.haomeiwen.com/subject/ynlkektx.html