2014-07-14 35 views
1

我正在發送包含用戶名和密碼的電子郵件地址的發佈請求。將字符串轉換爲HTML在Swift中

test%40test.com 

但是當我通過它實際的電子郵件地址,這顯然是行不通的:當我硬編碼的電子郵件地址([email protected])這樣的請求工作。在swift中,如何將字符串轉換爲它的HTML格式(或我猜測的URL格式)。我發現iOS7添加了NSHTMLTextDocumentType,可以爲我做到這一點,但我無法在Swift中找到任何示例。這是我在目標C中找到的一個:

NSURL *htmlString = [[NSBundle mainBundle] 
URLForResource: @"helloworld" withExtension:@"html"]; 
NSAttributedString *stringWithHTMLAttributes = [[NSAttributedString alloc] initWithFileURL:htmlString options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType} documentAttributes:nil error:nil]; 

這將如何在Swift中工作?或者,如果任何人有一個更好/更容易的建議,將適用於所有版本的iOS我會很感激。我也不想引用第三方庫來完成這項工作。

+1

相關(也許重複):http://stackoverflow.com/questions/24551816/swift-encode-url/24552032#24552032 –

回答

1

剛剛在操場上試過這個,它似乎工作。這是我在Objective-C中用於轉義URL的字符串的方法。

var email: CFStringRef = "[email protected]" 
CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(nil, email, nil, "!*'();:@&=+$,/?%#[]", kCFStringEncodingASCII)) 
+0

原諒我的無知我是iOS開發新手。這基本上是調用目標C來執行此操作嗎?如果是這樣,Swift中有沒有一種本地方式來實現這一點? – PretzelJesus

+0

這取決於你的本地定義,我猜。 CFURLCreateStringByAddingPercentEscapes是CoreFoundation中的一個函數,它是Apple的「標準庫」之一。所以,雖然這個函數本身正在被Swift橋接,並且是用另一種語言編寫的,但是Swift如此強大的開箱即用功能的一部分是,您可以訪問這些庫以及他們背後幾十年的工作。 – richrad

2

謝謝布萊恩我從那個帖子裏得到了答案。以下是最終的工作:

var originalString = "[email protected]" 
var escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet()) 
println("escapedString: \(escapedString)") 

此打印出

test%40test.com