2015-03-31 1 views
0

У меня есть очень простой веб-сервер на моем arduino, который включает светодиод при вводе текста (... /? LedOn) и отключении при вводе (.../? LEDoff).Просто введите url в Swift

Теперь я нашел видео о том, как контролировать эти два состояния с очень простой ищет Objective C кода с этого сайта here:

- (IBAction)switchPressed:(id)sender { 
    UISwitch *theSwitch = (UISwitch *) sender; 
    if (theSwitch.isOn) { 
     NSURL *url = [NSURL URLWithString:@".../?ledOn"]; 
     NSURLRequest *req = [NSURLRequest requestWithURL:url]; 
     [myWebView loadRequest:req] 
    } 
} 

Так я пытался преобразовать этот код в стрижа, но есть ошибка, при создании переменной NSURL, я получаю переменную типа NSURL?


текущий Swift попытка выглядит следующим образом:

var url = NSURL(string: ".../?buttonOn") 
var reqest = NSURLRequest(URL: NSURL(url)) 
+0

Вы можете разместить свой преобразованный код Swift? Возможно, это может быть проблемой с опциями, но невозможно сказать, не обращая внимания на код ... – jomafer

+0

'var url = NSURL (строка:« ... /? ButtonOn ») var reqest = NSURLRequest (URL: NSURL (url)) ' –

+0

Этот фрагмент кода загружает веб-представление, чтобы вызвать запрос. Вам действительно нужен этот веб-просмотр (т. Е. Чтобы пользователь мог визуально проверять HTML-сообщение обратно)? Если нет, есть лучшие способы сделать это. – Rob

ответ

1

Я предлагаю заменить веб-представление на звонок NSURLSession. Это, кстати, устраняет необходимость в создании NSURLRequest.

Таким образом:

@IBAction func switchPressed(sender: UISwitch) { 
    if sender.on { 
     let url = NSURL(string: ".../?ledOn")! 
     let task = NSURLSession.sharedSession().dataTaskWithURL(url) { data, response, error in 
      // parse `data` or examine `error` here, e.g. 
      // 
      // if error != nil { 
      //  println("\(error)") 
      // } 
     } 
     task.resume() 
    } 
} 

Или, если вам нужно обновить пользовательский интерфейс, сообщающий об ошибке, убедитесь, что для отправки, что обратно в основной очереди:

@IBAction func switchPressed(sender: UISwitch) { 
    if sender.on { 
     let url = NSURL(string: ".../?ledOn")! 
     let task = NSURLSession.sharedSession().dataTaskWithURL(url) { data, response, error in 
      if error != nil { 
       dispatch_async(dispatch_get_main_queue()) { 
        //update UI reporting error here 
       } 
      } 
     } 
     task.resume() 
    } 
} 
+0

Я, это то, что я ищу! Спасибо вам! –

1

Три способ это исправить:

Первая: Объявляет URL постоянная в качестве дополнительного

let url : NSURL? = NSURL(string: "http://korfay.ddns.net/?buttonOn") 
if let unwrappedURL = url { 
    var reqest = NSURLRequest(URL: url!) 
    // do the work here 
} 

Вторых один: Принудительно URL постоянная, чтобы показать значение (оно может рухнуть, если значение равно нулю):

let url = NSURL(string: "http://korfay.ddns.net/?buttonOn") 
var reqest = NSURLRequest(URL: url!) 

Третьи один: Принудительное разворачивание:

let url : NSURL! = NSURL(string: "http://korfay.ddns.net/?buttonOn") 
var reqest = NSURLRequest(URL: url) 
+0

Спасибо, сэр, я проверю это! –

+0

Большое вам спасибо, это сработало, но мне нужен этот веб-просмотр ... Но не имеет значения, спасибо. –