如何测试 PHImageResultIsInCloudKey?

How do I test PHImageResultIsInCloudKey?

我的应用有一个自定义照片选择器,它使用照片框架来浏览相册和 select 一张照片。我已经隔离了一个非常具体的错误报告,该错误仅在用户 (a) 打开 iCloud 照片库,(b) 在他们的照片设置中打开优化存储和 (c) 特定相册 and/or 图像时发生已从设备上移开。

在这种情况下,似乎没有实际图像返回到我传递给 PHCachingImageManager#requestImage 的闭包。相反,根据我收集到的信息,PHImageResultIsInCloudKey 包含在 info 字典中,我需要重新调用 isNetworkAccessAllowed 设置为 true 的请求。

但是,在我自己的测试中,我无法让这种特定情况发生,所以我可以确认我的修复工作。即使打开了 iCloud 照片图库和优化存储,我仍然总是能取回图像,但从未取回 PHImageResultIsInCloudKey

有没有办法强制图像在设备外并且必须从云端加载的情况?

我在使用 PHAssets 时遇到了类似的问题,其中用户设备有一个难以想象的庞大照片库(意味着很多照片都在设备外),这导致了性能问题。

为了复制这些条件,我制作了 https://github.com/jrturton/DiskFiller,正如您可能猜到的那样,它会将大量文件写入您的设备,直到它已满,这具有触发 "optimised storage" 的副作用iCloud 照片启动,将旧照片移动到云端。也许这会有所帮助。

可能最好在测试设备上 运行 如果你有的话:)