如何将上下文对象传递给 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的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 React 的 Context 功能将 HTML5 Canvas 上下文传递给 this.props.children?
最好将 prisma 对象通过上下文传递给解析器还是直接使用它?