2013-07-10 3 views
0

Мне нужно создать UIWebview, добавив некоторые данные, которые я получаю из своего API в файл HTML, который у меня есть локально. Это первый раз, когда я должен это сделать, и я не могу найти, как это сделать.Объединить файлы html в UIWebView

Мой HTML файл выглядит следующим образом:

<h1>%%%title%%%</h1> 
     <p class="date">%%%date%%%</p> 
     <a %%%hrefimage%%% class="link-diapo"> 
      <div class="image"> 
       <img src="%%%img%%%" alt="%%%title%%%"/> 
       %%%diapo%%% 
      </div> 
     </a> 
     <div id="content" style="font-size:%%%size%%%px;"> 
      <p>%%%chapo%%%</p> 
      <p>%%%html%%%</p> 
      <p class="source">%%%author%%%</p> 
     </div> 

и мои данные:

 "title": "My title", 
     "date": "2013-07-10", 
     "hour": "19h45", 
     "chapo": "blablabla", 
     "author": "Me", 
     "description": "html text" 
... 

Есть ли способ сделать это легко? Или мне нужно обнаружить %%% в моем HTML-файле?

Thx!

ответ

1

Если у Вас есть свой первоначальный HTML в качестве NSString, вы могли бы использовать stringByReplacingOccurrencesOfString: withString :, что-то вроде

NSError *error; 
NSString *initialHTMLString = [NSString stringWithContentsOfFile:(your file path) encoding:NSUTF8StringEncoding error:&error]; 

//do something to get the data back from the api, I'll assume NSData w/ JSON formatting 
NSDictionary *jsonDic = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil]; 
NSString *titleString = [jsonDic objectForKey:@"title"]; 

NSString *HTMLStringWithTitleAdded = [initialHTMLString stringByReplacingOccurencesOfString:@"%%%title%%%" withString:titleString]; 

Затем нужно будет повторить что-то подобное, что для каждого из ключевых данных, которые вы получаете обратно из API.

1

Вы можете использовать механизм шаблонов Mustache, чтобы вставлять значения словаря в разметку.

Чтобы фактически загрузить строку разметки в UIWebView вы могли бы сделать что-то вроде следующего:

NSURL * URL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]] 
[self.webView loadHTMLString:markup baseURL:URL];