Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在NSValueTransformer中执行字符串操作?_Objective C_Cocoa_String - Fatal编程技术网

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:,很可能就完成了。