swift - 将 gif 存储在核心数据中 - Swift 3

标签 swift core-data gif

如何将从 HTTP 请求获取的 GIF 图像存储在 Core Data 中? 我已经使用 UIImagePNGRepresentation 将静态图像存储为二进制数据属性中的 NSData,但我如何继续处理 gif?

编辑:到目前为止,我所做的是从请求中获取数据,然后使用 UIImagePNGRepresentation 将其存储在 BinaryData 中。但是,当我尝试使用 SwiftyGif 创建 UIImage 时,会显示一条错误消息,指出无法确定 GIF 的延迟时间。所以我猜 PNG 表示与 GIF 的框架困惑。 我还尝试直接存储来自http请求的数据,但随后 UIView 向我抛出此错误:由于未捕获的异常“CALayerInvalidGeometry”而终止应用程序,原因:“CALayer位置包含NaN

最佳答案

gif是一种文件格式,文件就是数据,数据可以存储在核心数据中。尽管如此,在任何数据库中存储大量二进制数据都是一种不好的做法,文件系统通常是更好的选择。我建议将文件存储在文件系统中,并在数据库中保留相对文件路径(确保它是相对的,因为应用程序的容器目录可以更改)。如果这些是从服务器检索并且可以重新获取的图像,则它们应该存储在 tmp 目录中(或者应该使用 SDWebImage 之类的东西单独管理)。如果以后无法检索它们,则应将它们存储在文档目录中。

如果这看起来很难,那么您仍然可以将它们存储在核心数据中。 Core-data 确实有一个选项允许它将属性存储为数据库文件外部的文件(“允许外部存储”)。

关于swift - 将 gif 存储在核心数据中 - Swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44230331/

相关文章:

ios - 删除开发中使用的 CoreData 迁移

objective-c - 对象何时获得非临时的 objectID?

ios - 具有自定义 NSSortDescriptor 的 NSFetchedResultsController

java - 如何检测给定的图像文件是否是 Android 中的动画 GIF

gif - GIF89a 规范中的 "Color Resolution"和 "Size of Global Color Table"有什么区别?

ios - Firebase 无法获取通知 token

Swift 获取 Idfa 崩溃

swift - 有没有更好的方法来优化这个 Firestore 查询?

IOS Swift 处理全局事件

ios - 将 GIF 文件添加到 Xcode Assets 文件夹