2013-03-26 21 views
1

我想使用某些類(NSURL或類似的)構建電子郵件URL 但是我不希望解析字符串的開銷。我希望能夠以指定方式(mailto在這種情況下)和地址iOS - 無需解析即可構建電子郵件URL

我試過這個代碼(在這種情況下[email protected]):

NSString *address = @"[email protected]"; 
NSString *scheme = @"mailto"; 

NSURL *url = [[NSURL alloc] initWithScheme:scheme host:address path:@"/"]; 
NSLog(@"test2: %@", [url absoluteString]); 

但它輸出:

mailto://[email protected]/ 

這甚至不是有效的電子郵件URL。

我有什麼選擇?

p.s.請不要使用NSDataDetector,因爲它比通常的字符串解析更昂貴。

+0

很想知道爲什麼你的目標是「高度優化「解決方案。 – Till 2013-03-26 04:11:13

回答

2

假設你有純粹的電子郵件地址,並沒有其他用具,解決方法很簡單:

- (NSURL *)mailtoURLWithEmailAddress:(NSString *)address; 
{ 
    address = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSURL *result = [NSURL URLWithString:[@"mailto:" stringByAppendingString:address]]; 
    return result; 
} 

添加百分號轉義是很重要的應該有有人可能ASCII字符以外的指定地址的任何機會,或者包含一個保留的URL字符。

有關更強大的解決方案,請參閱我的KSFileUtilities存儲庫中的KSMailtoURLs。它補充說:

  • 處理字符串,包括收件人姓名,以及地址
  • 電子郵件主題行等的編碼