在核心数据模型中存储 NSImage

Posted

技术标签:

【中文标题】在核心数据模型中存储 NSImage【英文标题】:Storing an NSImage in a Core Data Model 【发布时间】:2009-03-01 06:04:37 【问题描述】:

的正确方法是什么?我假设向实体添加属性并为其赋予“二进制”类型应该可以工作,但它不起作用。我有一个包含 NSImageCells 列的表格,但它没有显示任何内容。

【问题讨论】:

【参考方案1】:

如果您可以在 10.5+ 中工作,最简单的方法是将图像的 NSImageReps 存储在“可转换”属性中。默认情况下,可转换属性使用 NSCoding 在设置时存档其值并在访问时取消存档。这使您不必编写自定义 getter/setter。如果你想变得花哨,你可以编写一个自定义的NSValueTransformer,它将图像转换为其表示的 acrhived 版本,反之亦然。如果您使用的是 10.4,则必须编写自定义 getter/setter(请参阅 Apple 关于创建 Non-standard persistent attributes 的文档。您可以通过发送 NSImage -representations 消息来获取图像的图像代表。

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

您需要创建它的 NSData 表示。

看看Non-Standard Persistent Attributes。特别是可转换属性和自定义代码下的部分,如果这不能解决您的问题。

【讨论】:

【参考方案4】:

这是一个非常简单的实现

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

【讨论】:

链接页面已不存在。

以上是关于在核心数据模型中存储 NSImage的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 iOS 中的数据模型存储到核心数据中并以数据模型的格式获取

使用 NSObject 的核心数据类模型

“找不到源存储的模型”核心数据错误

核心数据迁移问题:“持久存储迁移失败,缺少源托管对象模型。”

如何在我的核心数据模型中使用 SF 符号? [关闭]

无需迁移即可替换核心数据模型