Objective-C内置模板系统?

前端之家收集整理的这篇文章主要介绍了Objective-C内置模板系统?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个iPhone应用程序,我使用 HTML显示格式化的文本.

我经常显示相同的网页,但内容不同.我想使用模板HTML文件,然后用我的不同值填充它.

我想知道Objective-C是否有类似于Ruby中的ERB的模板系统.

这样就可以做到这样的事情

模板:

<HTML>
  <HEAD>
  </HEAD>
  <BODY>
    <H1>{{{title}}}</H1>
    <P>{{{content}}}</P>
  </BODY>
</HTML>

Objective-C(或者它可能在理想世界中)

Template* template = [[Template alloc] initWithFile:@"my_template.tpl"];
[template fillMarker:@"title" withContent:@"My Title"];
[template fillMarker:@"content" withContent:@"My text here"];
[template process];
NSString* result = [template result];
[template release];

结果字符串将包含:

<HTML>
  <HEAD>
  </HEAD>
  <BODY>
    <H1>My Title</H1>
    <P>My text here</P>
  </BODY>
</HTML>

上面的例子可以通过一些文本替换来实现,但这将是一个难以维护.
我还需要像模板中的循环一样的东西.例如,如果我要显示多个项目,我想生成多个div.

谢谢阅读 :)

解决方法

您是否考虑过使用模板:
<HTML>
  <HEAD>
  </HEAD>
  <BODY>
    <H1>%@</H1>
    <P>%@</P>
  </BODY>
</HTML>

然后:

// just to get file name right
NSString* fn = 
    [NSString stringWithFormat:@"%@/my_template.tpl",[[ NSBundle mainBundle ] resourcePath ]];
// template
NSError *error;
NSString* template = 
    [NSString stringWithContentsOfFile:fn 
              encoding:NSUTF8StringEncoding error:&error];
// result
NSString* result = 
    [NSString stringWithFormat:template,@"MyTitle",@"MyText"];

我认为这几乎是你想要的.

当然,您必须将模板文件添加为项目中的资源.

猜你在找的C&C++相关文章