Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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
GRMustache格式的数字,或iOS中带有数字格式的HTML模板引擎_Html_Ios_Template Engine_Kvc - Fatal编程技术网

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

GRMustache格式的数字,或iOS中带有数字格式的HTML模板引擎,html,ios,template-engine,kvc,Html,Ios,Template Engine,Kvc,我不知道该怎么做才是最好的。我试着用我自己的方式解决这个问题。我试着使用GRMustach,结果发现我试图显示的floats在我尝试使用的模板中看起来很可怕 基本上,我有一个模型,我正试图通过一个模板输出为HTML。理想情况下,我只需将变量名/键路径放入模板中,然后使用呈现的实际值(基本上)解析模板。但是,我使用的模型在其所有计算中都使用浮点数,我真的希望它们呈现为逗号分隔的整数字符串(例如,(float)9382.233325=>“9382”) 在GRMustach中,我似乎找不到任何涉及这种

我不知道该怎么做才是最好的。我试着用我自己的方式解决这个问题。我试着使用GRMustach,结果发现我试图显示的
float
s在我尝试使用的模板中看起来很可怕

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


在GRMustach中,我似乎找不到任何涉及这种情况的文档,但我认为这不是一个不寻常的要求。有人知道如何使用GrMustach或通过其他技术实现这一点吗?

我是GrMustach的作者

GrMustach中没有,也永远不会有任何浮点格式特性,因为OS中已经有一个非常适合的工具:NSNumberFormatter

由于您正在向GRMustach提供模型对象,因此我的建议如下:

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

@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}}


快乐的小胡子

GRMustache 1.12现在为数字格式提供了更好的API:

这太棒了,谢谢。不过,我想知道,为每个属性(比如20-25)创建一个格式化的值方法似乎有点乏味。我假设GRMustache标记项不能是带有参数的消息。是否有一种方法可以对任何
格式的
进行类似的元编程?是的,有一种方法,具有lambda节{{{{format}}{{value}}{{/format}}。彻底检查GRMustache页面上的lambda文档。现在检查GRMustacheSection.h,查找返回节的内部未处理内容的方法。您应该能够实现一个lambda,它从模板字符串{{value}}中提取变量名“value”,并进行处理。我承认这并不理想,但它肯定会起作用,还有一些优化空间。实际上,有很多方法:-)还可以定义20-25个静态lambdas格式化的\u value1、格式化的\u value2等,它们将格式化从lambda上下文中提取的值。检查文档中孤立的GRMustache辅助对象。这将更加详细,但比上面的技术更清晰,比20-25属性更可读。你在这里建立了一个非常棒的工具。非常感谢你!Josh,GRMustache 1.9已经推出,内置了对数字格式的支持。您应该检查它,它肯定会使您的模板不那么冗长。