【发布时间】:2015-04-27 21:19:04
【问题描述】:
我有一个包含核心数据对象的表格视图/详细信息的程序。 其中一个属性是图像(它只出现在细节中)。 我认为最好只保存图像文件的路径,而不是图像本身(在我看来,带有图像的核心数据文件比图像大得多,即使仅此而已......)。
由于假设用户将图像拖到图像井中,我认为使用“值路径”(AC.selection.image)将图像井绑定到阵列控制器(AC)是合适的。 然而,这并没有做任何事情(imagewell 接受拖到那里的图像,但当我们更改选择时它会保留在那里)。
在我看来,我可能必须实现一些“值转换器”,但不是那些可用的(NSUnarchiveFromData 和 NSKeyedUnarchiveFromData),因为我已经尝试过这些......
我的这个假设是对的吗?如果是这样,那将是什么价值转换器?这是我必须定义的东西吗?或者这完全不可能?
也许我应该补充一点,我仍在使用 OSX 10.6,因此似乎排除了一些假设......
谢谢
【问题讨论】:
-
在你的情况下,这是你必须定义的东西——你需要一个自定义的值转换器。真的没有那么多标准的。说到旧版本的 XCode,较新的版本会让您拥有一个 NSImage 属性,该属性不会使用 Binary/Allows External Storage 属性填充到您的 sqlite 存储中...See the high-voted answer here。不确定旧版本。
-
是的,我知道该文件(本例中为图像文件)可以保留在商店之外,但它似乎只适用于较新的版本(从 10.7 开始,似乎... )。我在 XCode 中也有该选项,但它不起作用。所以我必须深入研究如何定义自定义值转换器。
-
我也有点不确定这是否可行。 Here 它说 Binding 是只读的(但从 10.3 开始可用,所以它不应该是版本问题)。
-
啊。如果 AC.selection.*image* 是(例如)一个 NSURL,你会想用
NSURL<->NSImage转换器绑定到value。用户拖放后的 NSImage->NSURL 方向将为您提供保存图像的机会......假设。我也有点不确定细节,或者我会回答而不是评论。 -
是的,你是对的。问题是我保存的是图像而不是路径。我以前试过。我也尝试将其另存为外部,但它没有;如果您检查允许外部存储,我会立即收到错误消息。与此同时,我购买了一些额外的内存来升级到 OSX Lion(我的 MacBook 2006 可以走得更远),然后我想我可以用不同的方式做事。还是谢谢你:)
标签: macos core-data cocoa-bindings nsimageview