【发布时间】:2015-05-19 07:31:24
【问题描述】:
NSValueTransform 子类是在 UI 视图中显示 Core Data 属性的好选择吗:
- 像 (0,1,2,3,etc) 这样的数字字符串变成像 (Pending, Completed, Frozen, In progress, etc) 这样的字符串
- 像 (0,1) 这样的数字字符串到基于应用程序的图像中(red.png 如果 0,green.png 如果 1)
以下是 Core Data 显示的两个属性,计时器和状态:
这是我想要显示的内容,而不更改 Core Data 中的值:
如果不使用 NSValueTransformer,还有什么方法可以实现?
我不想看到永久转换的数据,只是为了减少存储在 Core Data 中的数据和更好的 UI 视图项。
我也尝试过修改托管对象类中的属性(没有 KVO 通知),但没有成功。
【问题讨论】:
-
我不这么认为,对于 1 或 2。值转换器非常适合将对象填充到核心数据中,并且它们非常适合将字符串转换为字符串和数字等等。但是#1您将与实体中的状态属性相关联,并且没有理由不让模型显式,并让视图将其转换为可读的东西,而不是基本上将其埋在访问器附件中,这就是值转换在这里。当我使用它们时,我永远不会立即找到它们,埋在远离它们重要的地方。
-
另外,在枚举类型的高效存储方面,还有this answer about enums in Core Data
-
其实还不错……我刚刚在 NSTableView 中添加了一个 NSValueTransform,之前我只是在其中显示枚举的 int 值……而且效果很好!
-
@geowar 你实现了变换和反向变换吗?这些方法是在哪个类中编写的?我没有看到如何将字符串转换为图像,然后将图像转换回字符串。
-
您不需要可逆变换。用户可以修改这些视图吗?这将如何运作?
标签: objective-c cocoa nstableview cocoa-bindings nsvaluetransformer