Frage Objective-C Eingebautes Vorlagensystem?


Ich entwickle eine iPhone-Anwendung und verwende HTML, um formatierten Text anzuzeigen.

Ich zeige oft die gleiche Webseite, aber mit einem anderen Inhalt. Ich möchte eine Template-HTML-Datei verwenden und sie dann mit meinen anderen Werten füllen.

Ich frage mich, ob Objective-C ein Template-System ähnlich wie ERB in Ruby hat.

Das würde Dinge wie machen lassen

Vorlage:

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

Objective-C (oder was es in einer idealen Welt sein mag)

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];

Und die Ergebniszeichenfolge würde enthalten:

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

Das obige Beispiel könnte mit etwas Textersetzung erreicht werden, aber das wäre mühsam zu warten. Ich würde auch etwas wie Loops in Templates benötigen. Wenn ich beispielsweise mehrere Elemente anzeigen möchte, möchte ich mehrere divs generieren.

Danke fürs Lesen :)


6
2018-03-29 16:25


Ursprung


Antworten:


Haben Sie darüber nachgedacht, als Vorlage zu verwenden:

<HTML>
  <HEAD>
  </HEAD>
  <BODY>
    <H1>%@</H1>
    <P>%@</P>
  </BODY>
</HTML>

Und dann:

// 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"];

Ich denke, es ist genau das, was du willst.

Natürlich müssen Sie Ihre Vorlagendateien als Ressourcen im Projekt hinzufügen.


8
2018-03-29 16:51



https://github.com/groue/GRMustache kann dir helfen.


3
2018-04-02 07:26



Nein, Objective-C hat kein integriertes Vorlagensystem. Im Allgemeinen würden Sie für einfache Anwendungen nur Text ersetzen (möglicherweise über stringWithFormat:) und für etwas Fortgeschritteneres würden Sie ein vollwertiges Vorlagensystem wählen, das Ihren Bedürfnissen entspricht.


2
2018-03-29 16:52



Das funktioniert für mich: http://mattgemmmell.com/2008/05/20/mgtemplateengine-vorlagen-mit-cocoa/


2
2018-04-06 20:18



Hier ist eine leichtgewichtige Vorlagen-Engine für objective-c: CCTemplate 


2
2017-08-08 05:20



In Swift 3.1

var fn: String = "\(Bundle.main.resourcePath)/my_template.tpl"
// template
var error: Error?
var template = try? String(contentsOfFile: fn, encoding: String.Encoding.utf8)
    // result
var result = String(format: template, "MyTitle", "MyText")

0
2018-05-24 21:46



Für viele von euch wahrscheinlich unwahrscheinlich Option, aber ich brauchte Vorlagen, um Code zu generieren und wählte die Verwendung von Java + FTP, http://freemarker.org/libraries.html

Ich endete mit einem Tool zum Generieren von Tabellenansichten, Formularansichten, Sammlung Ansichten, Google Drive-Integration basierend auf dem Datenmodell xcdatamodeld Datei.


-3
2018-06-02 22:33