2010-10-01 64 views
1

基本上,我試圖從我的應用程序中編程一個「tweet this」按鈕。根據他們在應用程序中的位置,他們可以點擊鳴叫按鈕,它會根據他們在哪裏發送的鳴叫消息將它們發送到Safari。UIApplication OpenUrl雙重轉義我的URL

爲了創建URL,我必須轉義我想放入NSUrl對象的查詢字符串。所以,我這樣做:

NSString* escapedTweet = [@"Some String With Spaces" stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; 

串接基地後,我的網址出來 「http://www.twitter.com/home/?status=Some & 20String%20With%20Spaces」 - 看着它在調試器中,這絕對是值(如預期的那樣)。現在,我創建了我的網址,並推出Safari瀏覽器:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:escapedUrlString]]; 

但這裏的地方的問題來了:的OpenURL似乎逃避我百分號,使Safari瀏覽器進入到實際的URL爲「http:// WWW。 twitter.com/home/?status=Some%2520String%2520With%2520Spaces「,這顯然是一個問題,因爲twitter將狀態消息創建爲」Some%20String%20With%20Spaces「。

NSUrl不會允許我創建一個帶有空格的URL,所以我完全失去了如何讓我的URL只包含%20。有沒有其他人遇到這個問題或找到解決方法?

我在帶有最新操作系統的iPad上運行,不確定它是否是iPhone上的相同問題。

編輯:簡而言之,我如何讓openUrl打開http://www.twitter.com/home/?status=Some%20Url%20With%20Spaces而不逃避我的百分號並創建一個像http://www.twitter.com/home/?status=Some%2520Url%2520With%2520Spaces這樣的URL?

+0

當你說「我的網址出來」,你的意思是你的網址或你的網址*字符串*?嘗試做'NSURL * url = [NSURL URLWithString:escapedUrlString];'並打印它,看看它是否是NSURL進行轉義而不是OpenURL。同時檢查控制檯日誌;我認爲SpringBoard.app打印正在打開的URL。 – 2010-10-02 15:11:46

回答

0

我假設escapedUrlString被宣佈爲NSURL *escapedUrlString = [NSURL URLWithString:escapedTweet];。那麼你的問題可能在於openURL:[NSURL URLWithString:escapedUrlString]];,因爲你正在接收一個URL,將它傳遞給另一個 URL,然後打開它。通過傳入escapedURLString(應該命名爲'escapedURL')而不是URLWithString:…來修復。

相關問題