首页 文章

具有UIImage属性的核心数据 - 使用UIImage还是NSData?

提问于
浏览
3

一直使用核心数据 . 在过去的某个地方,我决定NSManagedObject子类中的任何图像属性都应该是NSData的实例 . 我不记得究竟是什么通知了这个决定,但这是我多年前学到的并且一直坚持到底 . 当我想要一个UIImage时,我在NSManagedObject子类上有一个只读属性,它的getter将使用一个UIImageRepresentation函数从数据创建一个UIImage实例 .

现在我正在开发一个新项目,我发现Apple的PhotoLocations示例应用程序(Core Data Transformable Attributes)实际上使用UIImage作为持久属性 . 为什么?为简单起见,它肯定更容易,不需要UIImageRepresentation函数调用 .

我知道像“存储在外部记录文件中”这样的东西,我的问题不是关于那个,甚至图像是否应该在他们自己的实体中,与我的原始实体相关 - 它只是我是否应该使用UIImage或NSData作为持久属性的类型 .

很难弄清楚什么是最佳实践,或者缺点是哪种方式 . 任何见解将不胜感激 .

1 回答

  • 4

    我总是以任何人都可读的格式存储数据 . 它使数据更容易传输,在多个系统中使用,避免弃用等 .

    当我存储图像时,我将其存储为PNG格式而不是UIImage . 为什么?

    • UIImage可能会改变 .

    • 我可能想将其上传到服务器 .

    • 我可能需要读取OS X上的文件 .

    • 我可能想让它以后可以运输 .

    谈到数据,我喜欢思考过去和现在 .

相关问题