2017-05-31 17 views
5

próbuję użyć swiftyjson i otrzymuję błąd:swiftyjson - Zaproszenie może rzucać, ale to jest oznaczone „spróbować”, a błąd nie jest obsługiwane

Call can throw, but it is marked with 'try' and the error is not handled.

I potwierdziły, że moje źródła JSON jest dobry. Szukałem i nie mogę znaleźć rozwiązania tego problemu.

import Foundation 


class lenderDetails 
{ 

func loadLender() 
{ 

    let lenders = "" 

    let url = URL(string: lenders)! 
    let session = URLSession.shared.dataTask(with: url) 
    { 
     (data, response, error) in 


     guard let data = data else 
     { 
      print ("data was nil?") 
      return 
     } 

     let json = JSON(data: data) 
     print(json) 
    } 

    session.resume() 
} 
} 

Dziękuję za pomoc!

Odpowiedz

0

Powinieneś zawinąć go do bloku do-catch. W twoim przypadku:

do { 
    let session = URLSession.shared.dataTask(with: url) { 
     (data, response, error) in 
      guard let data = data else { 
      print ("data was nil?") 
      return 
     } 

     let json = JSON(data: data) 
     print(json) 
    } 
} catch let error as NSError { 
    // error 
} 
0

Prawdopodobnie musisz wdrożyć blok do{} catch{}. Wewnątrz bloku do musisz wywołać funkcję throwable za pomocą try.

25

SwiftyJSON initializer throws, deklaracja jest

public init(data: Data, options opt: JSONSerialization.ReadingOptions = []) throws 

Masz trzy opcje:

  1. użyć do - catch blokowe i obsługi błędu (zalecana jeden).

    do { 
        let json = try JSON(data: data) 
        print(json) 
    } catch { 
        print(error) 
        // or display a dialog 
    } 
    
  2. Zignoruj ​​błąd i opcjonalnie połącz wynik (użyteczne, jeśli błąd nie ma znaczenia).

    if let json = try? JSON(data: data) { 
        print(json) 
    } 
    
  3. Siła otwierania wynikiem

    let json = try! JSON(data: data) 
    print(json) 
    

    Użyj tej opcji tylko wtedy, gdy jest to zagwarantowane, że próba nigdy nie powiedzie się (nie w tym przypadku!). Try! może być użyty na przykład w FileManager, jeśli katalog jest jednym z domyślnych katalogów, które framework tworzy mimo to.

Aby uzyskać więcej informacji prosimy o zapoznanie Swift Language Guide - Error Handling

+1

sould być wybrana odpowiedź! – Alfi

Powiązane problemy