2015-07-02 53 views
0

我建立使用Xamarin的統一API的應用程序,並正在創建一個NSURL使用字符串。然而,當我嘗試創建NSUrl時,該應用程序崩潰。Xamarin - NSURL返回null

string url = "comgooglemaps-x-callback://?daddr=" + destination; 
NSUrl googleMapsURL = new NSUrl (url); 

url值是comgooglemaps-x-callback://?daddr=600+Drake+Apartments\n600+Drake+St,+Vancouver+BC+V6B+5W7,+Canada

在控制檯的消息是:

無法初始化類型 'Foundation.NSUrl' 的一個實例:在 天然「initWithString: '方法返回nil。它可以通過 MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure設置爲false忽略 這個條件。

我該如何解決這個問題?

+1

\ n必須進行轉義。 – gnasher729

回答

0

這將工作(與上面的代碼測試)。

using System.Web.Services; 
... 

string destination = System.Web.HttpUtility.UrlEncode(
    "600 Drake Apartments\n600 Drake St, Vancouver BC V6B 5W7, Canada"); 

現在變成

"comgooglemaps-x-callback://?daddr=600+Drake+Apartments%0a600+Drake+St%2c+Vancouver+BC+V6B+5W7%2c+Can…" 

添加引用System.Web.Services到項目中。我的猜測是,你的URL編碼,無論它來自哪裏,都與Apple API的期望不兼容。

+0

我所看到的,當你認爲一個完全有效的尋找字符會好起來的URL編碼失敗。有時候,如果數據是複製+粘貼的,它可能是Unicode版本的逗號或引號,肉眼並不總是可見的差異。 – staeryatz