2017-06-29 6 views
-1

Ich versuche Abwickeln json mit schnellen zu analysieren mit folgenden:gefunden unerwartet null, während ein optionaler Wert Parsing json swift

let apiPath = "http://samples.openweathermap.org/data/2.5/forecast?q=München,DE&appid=b1b15e88fa797225412429c1c50c122a1" 

    func getDataWithCompletionHandler(completionHandler: (_ jsonData: JSON?) -> Void) { 


     let request : URLRequest = URLRequest(url: URL(string: apiPath)!) 

Alamofire.request(apiPath, method: .get) 
      .responseJSON { (response) in 

Wenn meine app läuft bekam ich einen Fehler auf der Leitung:

let request : URLRequest = URLRequest(url: URL(string: apiPath)!) 

fatal error: unexpectedly found nil while unwrapping an Optional value.

Aber ich habe die richtige Zeichenfolge übergeben. Warum ist dieser Fehler passiert?

+0

Entfernen Sie diese Zeile aus code.let Anfrage Mit Verwendung: URLRequest = URLRequest (url: URL (string: apiPath)!) –

+0

Ihr apiPath ist keine richtige URL-Zeichenfolge –

+0

@UsamaSadiq warum? Bitte versuchen Sie es und Sie werden JSON Antwort finden. –

Antwort

1

Ihre URL Zeichenkette enthält Sonderzeichen, also müssen Sie Ihre URL Zeichenkette codieren, bevor Sie URL Objekt daraus machen. Es gibt zwei Möglichkeiten, den URL String zu codieren.

  1. addingPercentEncoding(withAllowedCharacters:)

    let apiPath = "http://samples.openweathermap.org/data/2.5/forecast?q=München,DE&appid=b1b15e88fa797225412429c1c50c122a1" 
    if let encodeString = apiPath.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed), 
        let url = URL(string: encodeString) { 
        print(url) 
    } 
    
  2. URLComponents

    var urlComponent = URLComponents(string: "http://samples.openweathermap.org/data/2.5/forecast")! 
    let queryItems = [URLQueryItem(name: "q", value: "München,DE"), URLQueryItem(name: "appid", value: "b1b15e88fa797225412429c1c50c122a1")] 
    urlComponent.queryItems = queryItems 
    print(urlComponent.url!) 
    
1

diesen Code Versuchen:

Alamofire.request(“http://samples.openweathermap.org/data/2.5/forecast?q=München,DE&appid=b1b15e88fa797225412429c1c50c122a1”, method: HTTPMethod.get, parameters:nil , encoding: URLEncoding.default, headers: nil).validate().responseJSON { (response) in 
      if response.result.isSuccess 
      { 
     //handle response 
      } 
     } 
1

Sie String-Inhalt nicht korrekt Symbol "ü" in diesem Pfad "q = München".

Ersetzen Sie es, um das Symbol zu korrigieren "u".

Verwandte Themen