我有一个带有表格视图的简单 Cocoa 应用程序。表格的每个单元格代表一个浮点值。浮点数存储在具有 5 个浮点属性的对象中,其名称与我为表视图中的列设置的标识符相匹配。
我已经设法将它们全部连接起来,以便存储的浮点值是可编辑的,除了当问题的数字恰好是 1,000 或更多时,这一切都很好。在这种情况下,输入数字后,它会返回到用逗号格式化的表格视图。
到目前为止一切顺利,除非您输入一个带有逗号的数字,否则逗号之后的所有内容都会在浮点转换中丢失。
因此,例如:
- 45.0 变为 45
- 999.9 变成 999.9
- 0 变成 0.0(不知道为什么小数点显示为零)
- 1000 变成 1,000
- 1,000 变成 1
- 2,312 变成 2
所以问题出在最后三个例子上。对于 1000 或更大的数字,会自动插入逗号,但如果输入逗号,则无法正确解释。
我没有在我的代码中明确地进行浮点转换,当我在属性上调用 setValueForKey 时正在后台处理它,当我调用 valueForKey 时正在发生字符串转换 - 在我的代码中传递了 ID。
这是我的数据控制器中的相关代码:
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
TCPointGroup *pg = [points objectAtIndex:row];
NSString *ident = [tableColumn identifier];
return [pg valueForKey:ident];
}
- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
TCPointGroup *pg = [points objectAtIndex:row];
NSString *ident = [tableColumn identifier];
[pg setValue:object forKey:ident];
}
这是保存浮点值的对象的定义:
@interface TCPointGroup : NSObject {
}
@property float pt_Xw;
@property float pt_Yw;
@property float pt_Zw;
@property float pt_xd;
@property float pt_yd;
+ (id)newWithArray:(NSArray*)array;
- (id)initWithArray:(NSArray*)array;
@end
对我来说,逗号是由浮点到字符串的转换插入的,但在发生的字符串到浮点的转换中没有正确理解,这对我来说似乎很奇怪。
关于如何使其以预期方式工作的任何建议?