问题标签 [nsvaluetransformer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
153 浏览

objective-c - 使用转换后的值对 NSTableColumn 进行排序

我的班级有一个属性是enum. 此属性绑定到NSTableColumn.

为了确保NSTableColumn显示正确的字符串表示,而不是显示数字 0、1 和 2,我使用NSValueTransformer.

因此Unknown变成“未知操作系统”。Win变成“MS Windows”并OSX变成“OSX 10.8”。表格列正确显示了这些值。

我需要使用转换后的值对列进行排序。如果我使用

该列按以下顺序排序:

未知操作系统
MS Windows
OSX 10.8

这确实是有道理的,因为 0 < 1 < 2。但我要求它使用它们的字符串对应物进行排序,这将使它:

MS Windows
OSX 10.8
未知操作系统

如何在不更改枚举顺序的情况下做到这一点?

0 投票
1 回答
355 浏览

macos - NSImage 与 NSValueTransformer 一起使用时具有不透明度

我试图根据核心数据之外的枚举值显示一个 NSImage 。我在绑定到我选择要显示的图像的值的 NSImageCell 上使用值转换器。

不幸的是,当使用 NSValueTransformer 时,图像会得到它不应该具有的不透明度,并且可以完美地工作。

这是我的 NSValueTransformer 子类的摘录:

对应的静态 NSImage 定义:

和我使用的枚举:

下面是实际应用程序的屏幕截图,其中一个没有 NSValueTransformer,但在 IB 中分配了一个静态 NSImage。所以它不是具有 alpha 或其他东西的 PNG。来自不同位置的三个不同图像会发生这种情况。

实际应用 http://imageshack.us/a/img195/2492/appqe.png 静态图片 http://imageshack.us/a/img27/3289/43084671.png

0 投票
0 回答
234 浏览

xcode - 尝试编辑时,tableview 上的 Coredata 绑定 NSNumber 列崩溃

我已经创建(没有编码)一个 coredata 实体和一个可可窗口,该窗口在可编辑的 tableview 中显示行,该 tableview 绑定到绑定到实体的数组控制器。表中有一个 NSNumber 列,没有自定义值转换器在编辑时崩溃,因为表格视图中的列试图保存为字符串。

因此,我创建了一个自定义值转换器,将其链接到该列,但现在出现不同的错误。这是我的代码:

这是我单击该列后立即得到的错误:

我在这里做错了什么?我只想能够输入一个数字并将其保存回实体。非常感谢

0 投票
1 回答
1318 浏览

ios - 将可转换的 NSAttributedString 保存到 Core Data 中时发生非常奇怪的崩溃

我有一个使用 Core Data 的项目。它有一个 Note 对象,该对象具有一个称为内容的可转换属性。我将 NSAttributedString 存储到此属性中。该属性在第一次保存时保存得很好,但是当我尝试创建第二个笔记对象时,应用程序崩溃了。

这是我用来保存的代码:

同样,当持久存储中没有对象时,此代码可以毫无问题地保存。
当我尝试保存新对象时(在非空存储中:)首先抛出此异常(我为所有异常设置了断点)-[NSConcreteMutableAttributedString compare:]: unrecognized selector sent to instance 0x1759e8b0

然后当我继续时,我得到了这个:

2013-07-18 10:17:39.011 Meta[2417:60b] CoreData:错误:严重的应用程序错误。在核心数据更改处理期间捕获到异常。这通常是 NSManagedObjectContextObjectsDidChangeNotification 观察者中的一个错误。-[NSConcreteMutableAttributedString compare:]: 无法识别的选择器发送到实例 0x1759e8b0 与 userInfo (null) 2013-07-18 10:17:39.014 Meta[2417:60b] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“ -[NSConcreteMutableAttributedString compare:]:无法识别的选择器发送到实例 0x1759e8b0'

我还使用了一个 NSManagedObject 子类,它的实现方式如下:

同样,内容是我试图存储属性字符串的地方

我尝试使用默认的 NSValueTransformer 和我自己的子类。两者都会导致同样的问题。

编辑:这是我的价值转换器的实现:

属性设置

编辑:这是回溯:

0 投票
3 回答
482 浏览

ios - 从 NSValueTransformer 内部引用 NSManagedObject 实体

我正在使用 NSValueTranformer 加密某些核心数据属性。这一切都很好,除了我需要能够根据 NSManagedObject 使用不同的加密密钥。无论如何我可以从我的变压器类中访问这个实体吗?

用例是我有多个具有不同密码的用户可以访问不同的 NSManagedObject 实体。如果我对所有对象使用相同的加密密钥,那么有人可以在 SQL 数据库中重新分配拥有它们的人,他们仍然会解密。

关于解决此问题的最佳方法的任何想法?

编辑:我应该提到我在 iOS 中这样做。

0 投票
2 回答
1716 浏览

objective-c - 核心数据 - 如何在不触发错误的情况下检查对象关系是否存在

有一个对象 A 和一个对象 B。对象 B 具有一个可类型转换的属性(图像),以及一个与对象 A 的关系。对象 A可能与一个且只有一个对象 B 有关系,或者它可能不会。

当我枚举我的对象 A 数组时,我想检查每个对象 A 是否有一个对象 B。但是,我不想触发对象 B 的故障(这将调用反向 imageToData NSValueTransformer)。我只是想知道它是否存在。如果不将对象 B 带入内存,我该如何做到这一点?

0 投票
1 回答
469 浏览

objective-c - 在块中返回非指针对象时出现问题

我正在使用 Mantle 帮助我将模型对象转换为 JSON。我的一个对象包含一个centroid定义如下的属性:

@property (assign) CLLocationCoordinate2D centroid;

当我处理服务器时,我收到以下格式的属性:

所以我决定实现MTLJSONSerializing协议中可用的自定义 JSON 转换器,定义如下:

我遇到的麻烦是+ (instancetype)transformerWithBlock:(MTLValueTransformerBlock)transformationBlock内部的方法MTLValueTransformer接受了一个类型的块typedef id (^MTLValueTransformerBlock)(id);,它返回一个类型的值id或任何objective-c指针对象。

但是,我想做的是返回 CLLocationCoordinate2D 类型,它是一个标量,非id类型。除了定义我自己的客户实现之外,transformerWithBlock:是否有一种干净的方法可以实现这一点?

0 投票
1 回答
246 浏览

objective-c - NSValueTransformer 我可以向绑定数组添加更多对象吗?

我正在使用值转换器来转换表格内容“绑定”的内容数组,因此我可以在将值传递给视图之前对其进行编辑并且它可以工作

值中的编辑有效,并反映在 UI 中

但是当我尝试扩展数组时,而不是将表绑定到大小为 2 的数组,我想将其扩展为大小为 4,只需复制它们

这不起作用,我得到了旧数组的单元格计数如何实现我想要的?

谢谢

0 投票
0 回答
64 浏览

cocoa - 是否有用于文件大小的 NSValueTransformer?

我不敢相信这样的事情已经不存在了。是否有一些代码可以为文件大小实现 NSValueTransformer?我想在表格视图中有一列以最接近的SI 二进制倍数显示文件大小,例如“1.4MB”而不是“1,468,006”。

我能找到的最接近的是这个 SO question,但答案并不是我真正想要的。

0 投票
1 回答
175 浏览

objective-c - 如何将上下文对象传递给 NSValueTransformer

NSValueTransformer用于转换一个值。但是,如果转换需要更多上下文信息怎么办?例如,如何NSValueTransformer访问 nib 中的其他对象,或访问视图控制器?这不就是NSValueTransformer要使用的吗?

例如,我想将文本视图的属性字符串绑定到员工的姓名,使用值转换器根据员工的部门格式化姓名。

到目前为止,我的解决方案是只实现一个新employeeNameForDisplay属性左右,完全跳过值转换器。

如果这真的是最好的解决方案,我很难理解价值转换器的价值。他们真的有这么有限吗?