2016-10-11 2 views
1

Я работаю над погодным приложением и пытаюсь получить данные из API. Но когда я набираю название города и нажимаю Enter, Swift выводит сообщение «Необязательный (455 байт)». Не уверен, что пошло не так.Почему Swift печатает «Необязательно (455 байт)»

import Foundation 

protocol WeatherServiceDelegate{ 
    func setWeather(weather:Weather) 
} 

class WeatherService{ 
    var delegate: WeatherServiceDelegate? 

    func getWeather(city: String){ 
     let path = "http://api.openweathermap.org/data/2.5/weather?q=Boston" 
     let url = URL(string: path) 

     let task = URLSession.shared.dataTask(with: url!) { (data:Data?, response: URLResponse?, error: Error?) in 
      print(data) 
     } 

     task.resume() 

ответ

2

Там нет ничего плохого в том, что вы пытаетесь сделать, это, распечатайте IOS кодируются Data из необязательного переменной data типа Data?

Вы скорее следует проверить реакцию после декодирования.

Cheers!

+0

Вы правы, я думал, что получу некоторые исходные данные из api. Я просто был глуп. Большое вам спасибо – martinko2499

+0

Вы очень приветствуете друга, привет! –

+0

как бы проверить ответ, пожалуйста? – Martian2049

0

data имеет опционный тип Data?. В Swift, вы можете разворачивать, как это УСТРОЙСТВА:

if let data = data { 
     print(data) 
    } 

Это будет означать, что в данных, если заявление уже не необязательный тип и тип Data. Поскольку он был развернут, он больше не будет печатать текст «Необязательный()» в консоли.

0

Хорошо, так как вы назначаете значение данным, вы исключаете вероятность его останова = nil. Таким образом, вы можете использовать данные! автоматически разворачивать значение:

let task = URLSession.shared.dataTask(with: url!) { (data:Data?, response: URLResponse?, error: Error?) in print(data!) }

0

Ах так вот декодирования часть, в случае, если кто все еще ищет его.

if let data = data, 
     let urlContent = NSString(data: data, encoding: String.Encoding.ascii.rawValue) { 
     print(urlContent) 
    } else { 
     print("Error: \(error)") 
    } 
Смежные вопросы