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

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

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

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

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

【问题讨论】:

    标签: objective-c nib nsvaluetransformer


    【解决方案1】:

    文档引用...

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-09-13
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      相关资源
      最近更新 更多