1

我不确定如何最好地解决这个问题。我试过用自己的方式解决这个问题,但到目前为止失败了。我尝试使用 GRMustache,却发现我正在尝试显示float在我尝试使用的模板中看起来很丑陋的 s。

基本上,我有一个模型,我试图通过模板将输出作为 HTML。理想情况下,我只是将变量名称/键路径放入模板中,然后模板会被解析为实际值(几乎)呈现到位。但是,我使用的模型使用浮点数进行所有计算,我真的希望它们呈现为逗号分隔的整数字符串(例如(float)9382.233325=> "9,382")。

我似乎在 GRMustache 中找不到任何涵盖这种情况的文档,但我想这不会是一个不常见的要求。有谁知道如何使用 GRMustache 或通过其他技术来做到这一点?

4

2 回答 2

2

我是 GRMustache 的作者。

GRMustache 中没有,也永远不会有任何浮点格式化功能,因为操作系统中已经有一个非常适合的工具:NSNumberFormatter。

由于您将模型对象提供给 GRMustache,因此这是我的建议:

在模型上声明一个类别,并为每个格式化值添加一个特定方法:

@interface MYModel(GRMustache)
// name would match your original value property name
- (NSString *)formattedValue;
@end

在实现文件中,使用 NSNumberFormatter:

@implementation MYModel(GRMustache)
- (NSString *)formattedValue
{
  // Check the NSNumberFormatter reference for initializing
  // the NSSNumberFormatter for your desired output.
  NSNumberFormatter *formatter = [NSSNumberFormatter ...]; 
  return [formatter stringFromNumber: [self value]];
}
@end

注意创建许多 NSNumberFormatter 实例可能代价高昂。一个好的做法是提供一个返回共享方法的共享方法。上面的代码只是该技术的一个提示。

最后,在您的模板中,将{{value}}标签替换为{{formattedValue}}.

快乐的小胡子!

于 2012-01-20T07:26:42.427 回答
1

GRMustache 1.12 现在具有更好的数字格式化 API:https ://github.com/groue/GRMustache/blob/master/Guides/sample_code/number_formatting.md

于 2012-02-02T07:18:31.837 回答