2010-03-10 74 views
3

我正在添加功能,我的應用程序,它將允許它發送一些相當詳細的信息。我想將它作爲HTML格式的電子郵件發送,以便我可以利用HTML和CSS樣式。HTML電子郵件模板作爲NSString

我想採取的方法是用佔位符設計模板以填充字段,將模板加載到NSString中,然後使用字符串替換來替換佔位符與實際數據。

不是有一個huuuuuuge線如:

NSString *emailTemplate = [NSString stringWithFormat:@"<h1>TITLE</h1><hr noshade/><p>Here is the information about the thing that you are interested in. Find more from the table below:</p> . . ."] 

我想這樣做是一個更優雅的方式。我應該將模板寫入文件然後加載它嗎?什麼是最好的方法來做到這一點?

另外,我怎樣才能以本地化的方式做到這一點?

謝謝!

回答

3

我不確定以可本地化的方式做到這一點的最佳方式,但是將HTML寫入其自己的.html文件並將該文件的內容讀入一個NSMutableString對象,當你需要它。

可以使用

+ (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error 

如果使用這種方法,你就需要調用mutableCopy在返回的字符串,這樣以後可以做字符串替換做到這一點。不要忘記,使用mutableCopy將返回一個新的NSMutableString對象,當您完成它時,您將負責釋放該對象。

然後你就可以繼續使用

- (NSUInteger)replaceOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)opts range:(NSRange)searchRange 

與您的內容替換佔位符。

這樣做的優點意味着您可以使用所見即所得編輯器或您喜歡的IDE輕鬆編輯HTML,而無需更改應用程序中的代碼。您也可以通過這種方式預覽它看起來會更容易。

+0

我與你在談到創建HTML文件並將其加載到NSMutableString中,但我遇到困難的時候正在使用'replaceOccurencesOfString:'所花費的三十倍時間必須替換的變量。我想知道在NSString或NSMutableString中是否有某種類別的類別可以將符合KVC的對象的值應用到模板中指定的「標籤」。有任何想法嗎? – 2010-03-10 20:54:07

0

看看Matt Gemmell的實現,MGTemplateEngine。它適用於OS X和iOS。原來似乎只在SVN上託管,所以有人git-svn'ed it to Github。我需要在編譯之前修改構建設置,但它像一個魅力,並且非常強大(實際上,比我更強大,也可能是你,需要)。