2015-07-02 4 views
0

Я создаю приложение с использованием Унифицированного API Xamarin и создаю NSUrl со строкой. Однако приложение падает, как только я пытаюсь создать NSUrl.Xamarin - NSURL return 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: 'метод возвратил нуль. Это условие можно проигнорировать , установив 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