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

Posted

技术标签:

【中文标题】如何将上下文对象传递给 NSValueTransformer【英文标题】:How to pass contextual objects to NSValueTransformer 【发布时间】:2014-03-14 12:22:05 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

文档引用...

NSValueTransformer 是一个抽象类,Cocoa 绑定技术使用它来将值从一种表示形式转换为另一种表示形式。

...这是一个非常简单的类,它在不同表示之间转换值。有时我确实将它与 Cocoa Bindings 一起使用,但我确实将它与 CoreData 一起使用,因为我需要更好(更小,更快,...)表示底层 sqlite 存储。所以,这门课对我们来说是有价值的,即使你不能用它来实现你的目标。

我也会像你一样解决。新房...

+ (NSSet *)keyPathsForValuesAffectingEmployeeNameForDisplay:(NSString *)key 
    return [NSSet setWithArray:@[ @"employeeName", @"employeeDepartment" ]];

【讨论】:

以上是关于如何将上下文对象传递给 NSValueTransformer的主要内容,如果未能解决你的问题,请参考以下文章

将上下文传递给许多方法是否正常?

SwiftUI - 将托管对象上下文传递给模型

如何使用 React 的 Context 功能将 HTML5 Canvas 上下文传递给 this.props.children?

最好将 prisma 对象通过上下文传递给解析器还是直接使用它?

OS X Core Data - 将托管对象上下文传递给视图控制器

如何将 this 上下文传递给函数?