ios – 如何判断资产URL是否实际指向现有资产?

ios – 如何判断资产URL是否实际指向现有资产?,第1张

概述基本问题:如果您有资产URL并希望检索该资产的图像,您如何实际验证资产是否确实存在?请参阅下面的完整说明,了解我的意思. 我有一个我正在开发的应用程序,允许用户将图像分组为“捆绑”以进行进一步处理.图像可以来自iTunes共享,设备的相机(如果已连接)或设备的照片库.此外,用户可以以某些基本方式编辑图像. “捆绑”可以长寿;它们在应用程序停止和启动时被序列化和反序列化,因此应用程序的状态在运行之间 基本问题:如果您有资产URL并希望检索该资产的图像,您如何实际验证资产是否确实存在?请参阅下面的完整说明,了解我的意思.

我有一个我正在开发的应用程序,允许用户将图像分组为“捆绑”以进行进一步处理.图像可以来自iTunes共享,设备的相机(如果已连接)或设备的照片库.此外,用户可以以某些基本方式编辑图像. “捆绑”可以长寿;它们在应用程序停止和启动时被序列化和反序列化,因此应用程序的状态在运行之间是持久的.

我的原始设计将图像保存到应用程序的沙箱中.如果执行任何编辑,则只需将图像重写为其本地文件.但是,如果一个包包含大量图像,这可能导致图像内容的不必要的重复,导致不太理想的“文件系统”使用.

我的重新设计现在有它,所以如果一个图像来自资产库,我只存储资产的URL,并在我需要实际显示图像或其内容时检索它.当用户编辑图像时,它将被写入本地沙箱,就像在我的原始设计中一样.我的应用程序跟踪图像是来自本地文件系统还是资产库.

当我的应用程序不活动时,我的问题出现了.用户完全可以进入照片应用程序并随意删除图像 – 包括我的应用程序存储了URL指针的图像.

我做了“怎么办?”测试看看如果用户要做这样的事情会在我的应用程序中发生什么.我看到发生的事情有点意外.我编写了一个处理程序包,它遍历包列表,使用以下代码验证所有具有资产URL的图像:

[assetlibrary     assetForURL:url     resultBlock:^(ALAsset *asset) {         _image = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];         // ... everything works!     }     failureBlock:^(NSError *error) {         NSLog(@"Asset verify Failed");         if (_image != nil) {             // I already have a reference to the UIImage... write it locally         } else {             // Image is nil and we have an empty image.         }     }];

在我的测试中,我从未到达故障块. Apple的文档说“如果用户拒绝访问应用程序,或者如果不允许应用程序访问数据,则会调用失败块.”它没有说明当URL不存在时会发生什么.实际上,我的测试显示正在编写一条NSLog()消息“无法找到UUID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX的资产”(XXX被原始URL中的UUID替换).但这还不够糟糕.我仍然可以在屏幕上的VIEw Controller上看到UIImageVIEw中的图像,当我将视图控制器d出到父控件时,我会重置系统.

所以,我的问题是,有没有办法判断资产网址是否确实存在?我不介意我是否必须删除图像(毕竟,用户是删除图像的用户!).我不喜欢有一些已知的行为路径会导致设备重启;我无法将具有此行为的应用程序提交到App Store.

有什么建议?虽然我在等待答案,但我仍然会对自己的一些想法进行测试,但我可以使用人们可以给我的任何建议.

谢谢!

解决方法 我遇到了类似的问题 – 在resultBlocked中我检查了资产参数为nil – 如果它是nil则找不到资产. 总结

以上是内存溢出为你收集整理的ios – 如何判断资产URL是否实际指向现有资产?全部内容,希望文章能够帮你解决ios – 如何判断资产URL是否实际指向现有资产?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1068400.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存