Objective c 如何在NSValueTransformer中执行字符串操作?
我有一个表列,正在绑定到Objective c 如何在NSValueTransformer中执行字符串操作?,objective-c,cocoa,string,Objective C,Cocoa,String,我有一个表列,正在绑定到NSArrayController中的值。我要做的是在数组控制器中只显示实际值的子字符串。到目前为止,我一直尝试的方法是创建一个NSValueTransformer子类,然后在transformedValue方法中执行字符串操作。但是,我不知道如何将输入值转换为字符串(它的类型是NSConcreteValue),也许没有值转换器,有一种更简单的方法可以做到这一点。听起来像是在进行表示端格式化,在这种情况下,应该使用格式化程序 同样,如果这是一个包含多个值的字符串(例如,类
NSArrayController
中的值。我要做的是在数组控制器中只显示实际值的子字符串。到目前为止,我一直尝试的方法是创建一个NSValueTransformer
子类,然后在transformedValue
方法中执行字符串操作。但是,我不知道如何将输入值转换为字符串(它的类型是NSConcreteValue
),也许没有值转换器,有一种更简单的方法可以做到这一点。听起来像是在进行表示端格式化,在这种情况下,应该使用格式化程序
同样,如果这是一个包含多个值的字符串(例如,类似“从42到100”),则应该从中生成一个模型对象,并将这些值存储在数组控制器中。然后,您可以将表列绑定到模型对象的特定属性,而不必担心将字符串分离然后重新组合(加载并稍后保存模型时除外)
编辑:没关系;我没有看到对象值是NSValues,而不是NSStrings。听起来像是在进行表示端格式化,在这种情况下,应该使用格式化程序 同样,如果这是一个包含多个值的字符串(例如,类似“从42到100”),则应该从中生成一个模型对象,并将这些值存储在数组控制器中。然后,您可以将表列绑定到模型对象的特定属性,而不必担心将字符串分离然后重新组合(加载并稍后保存模型时除外)
编辑:没关系;我没有看到对象值是NSValues,而不是NSStrings。您可以使用
-description
方法获得任何对象的字符串表示,但对于NSValue实例,它不太可能打印任何特别有意义的内容。换句话说,由值转换器来解释传入的对象并生成字符串。如果是NSValue实例,问题是该实例包含的数据类型。一旦您知道了这一点,就可以编写代码将其表示为字符串(类似于NSStringFromRect()
)。您可以使用-description
方法获得任何对象的字符串表示,但对于NSValue实例,它不太可能打印任何特别有意义的内容。换句话说,由值转换器来解释传入的对象并生成字符串。如果是NSValue实例,问题是该实例包含的数据类型。一旦知道了这一点,就可以编写代码将其表示为字符串(类似于NSStringFromRect()
)。NSConcreteValue是NSValue的一个子类。绑定是否在没有转换器的情况下正确显示完整字符串?是-字符串在没有转换器的情况下显示良好。NSConcreteValue是NSValue的子类。绑定是否在没有转换器的情况下正确显示完整字符串?是-字符串在没有转换器的情况下显示良好。这是一个长字符串,我只希望表中显示前10个左右的字符。我可以从Interface Builder中的绑定检查器使用格式化程序吗?它不是绑定选项;这是牢房里的一个出口。在nib中创建格式化程序,并将单元格的格式化程序出口连接到格式化程序对象。同意。在这里,您想要子类化的是NSFormatter。您只需要实现-stringForObjectValue:,很可能就完成了。这是一个长字符串,我只希望表中显示前10个左右的字符。我可以从Interface Builder中的绑定检查器使用格式化程序吗?它不是绑定选项;这是牢房里的一个出口。在nib中创建格式化程序,并将单元格的格式化程序出口连接到格式化程序对象。同意。在这里,您想要子类化的是NSFormatter。您只需要实现-stringForObjectValue:,很可能就完成了。