【问题标题】:NSTextAttachment is somehow caching the image. Any ideas about how?NSTextAttachment 以某种方式缓存图像。关于如何做的任何想法?
【发布时间】:2018-01-14 00:06:15
【问题描述】:

当从包含图片链接 (https) 的 HTML 字符串创建 NSAttributedString 时,下载的图片会以某种方式被缓存。我是怎么得出这个事实的?

  1. 安装应用。
  2. 打开应用程序。图片在那里。
  3. 关闭应用程序(终止)。进入飞行模式。
  4. 打开应用程序。图片还在。
  5. 彻底删除应用,然后重新安装。
  6. 在飞行模式下打开应用程序。没有图片。

缓存图像实际上是我想要的。但我想更深入地了解图像的缓存方式和位置。由于我的应用程序应该离线工作,我必须确保图像是否被缓存。我深入研究文档,找不到任何东西。有人可以启发我吗?谢谢。

编辑澄清:

我没有直接使用 NSTextAttachment。我正在使用 UTF8 编码数据从字符串初始化 NSAttributedString。为什么我在谈论 NSTextAttachment 是我猜它会自动为 HTML 字符串中的“img”标签创建一个 NSTextAttachment。

【问题讨论】:

  • 你在使用NSTextAttachment吗?
  • 没有。我正在使用一个 NSAttributedString,一个包含 HTML 和 UITextView 的字符串。但我猜它会自动从“img”标签创建一个 NSTextAttachment 来显示图像。我错了吗?

标签: ios swift nsattributedstring image-caching nstextattachment


【解决方案1】:

由于文档没有说明图像将被缓存,因此最好假设没有缓存。因此,针对您的情况,最好的解决方案是下载URLSession的文件并将文件存储在磁盘上,这样当设备离线时,图像可以显示出来。

【讨论】:

  • 实际上,当 NSAttributedString 在一行中完成所有工作时(例如,解析 HTML,从 HTML 获取图像链接,下载并以某种方式缓存它(我相信它会!也许我想相信 :)) ) 手动做所有这些是不明智的:(
  • 请看下面的答案。图片真的被缓存了。
【解决方案2】:

对模拟器数据的一些挖掘证明我的图像确实被缓存了。

/Users/<username>/Library/Developer/CoreSimulator/Devices/<simulator-id>/data/Containers/Data/Application/<app-id>/Library/Caches/<app-bunle-identifier>/Cache.db 文件是一个保存缓存信息的 SQLite 文件。还有我的图片,以及它的链接和数据。

奇怪的是,Apple 没有记录这一点,我仍然不知道它是如何/何时缓存的。

【讨论】:

    猜你喜欢
    • 2015-06-21
    • 2017-03-05
    • 1970-01-01
    • 2011-05-28
    • 2015-09-12
    • 2013-09-26
    • 2019-12-15
    • 1970-01-01
    • 2018-09-30
    相关资源
    最近更新 更多