在核心数据模型中存储NSImage

时间:2009-03-01 06:04:37

标签: cocoa core-data cocoa-bindings nstableview nsimage

在核心数据模型中存储NSImage的正确方法是什么?我假设向实体添加一个属性并给它类型“二进制”应该工作,但它不起作用。我有一个包含NSImageCells列的表,但它没有显示任何内容。

4 个答案:

答案 0 :(得分:10)

如果您可以使用10.5+,最简单的方法是在“Transformable”属性中存储图像的NSImageRep s。默认情况下,可转换属性使用NSCoding在访问时将其值存档在set和unarchive上。这样您就不必编写自定义getter / setter。如果你想获得幻想,你可以编写一个自定义的NSValueTransformer,将图像转换为其表示的精确版本,反之亦然。如果您使用的是10.4,那么您必须编写自定义getter / setter(请参阅Apple关于创建Non-standard persistent attributes的文档。您可以通过发送NSImage -representations消息来获取图像的图像代表

如果要通过绑定在UI中显示图像,还应阅读Cocoa Bindings编程主题的Displaying Images Using Bindings部分。

答案 1 :(得分:8)

这并不能回答您提出的确切问题,但根据您存储的图像数量,只能将路径或URL存储到图像中,保存在您自己的位置,并根据需要加载它们会更高效。

答案 2 :(得分:7)

您需要创建它的NSData表示。

看看Non-Standard Persistent Attributes。特别是“可转换属性”下的部分,以及“自定义代码”(如果不对您进行排序)。

答案 3 :(得分:1)

这是一个非常简单的实现

http://objectivesheep.com/blog/nsimage_coredata/