GRMustache格式的数字,或iOS中具有数字格式的HTML模板引擎



我不知道如何最好地解决这个问题。我试着用自己的方式解决这个问题,但到目前为止失败了。我试着使用GRMustache,结果发现我试图显示float,在我试图使用的模板中看起来很可怕。

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

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

我是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实例可能代价高昂。一个好的做法是提供一个返回共享方法的共享方法。上面的代码只是该技术的一个提示。

最后,在模板中,用{{formattedValue}}替换{{value}}标记。

GRMustache快乐!

GRMustache 1.12现在为数字格式提供了更好的API:https://github.com/groue/GRMustache/blob/master/Guides/sample_code/number_formatting.md

最新更新