हैंडलिंग फ़ंक्शन त्रुटियों

0

सवाल

मुझे समझ में नहीं आता प्रलेखन से कैसे करने के लिए त्रुटि हैंडलिंग, मैं निम्नलिखित है:

func myFunc() async -> TransactionsClassAModel {
    let url = URL(string: "..."))
    
    let undecodedData = try! await networkingTools.afRequest(url: url!)
    let decodedData = try! JSONDecoder().decode(TransactionsClassAModel.self, from: undecodedData)
    
    return decodedData
}

मैं कुछ करने की कोशिश की तरह:

do {
    let undecodedData = try await networkingTools.afRequest(url: url!)
    try JSONDecoder().decode(TransactionsClassAModel.self, from: undecodedData)
} catch {
    print("error: ", error)
}

और वापसी बयान में कहते हैं Cannot find 'decodedData' in scope और एक चेतावनी है: Result of call to 'decode(_:from:)' is unused

कर सकते हैं किसी ने मुझे समझा कि यह कैसे काम करता है कृपया.

धन्यवाद

swift
2021-11-23 20:30:01
1

सबसे अच्छा जवाब

0

सरल ठीक है, एक बनाने do ब्लॉक, जो आप वापस अगर सब कुछ ठीक है । और एक पकड़ ब्लॉक जो होगा अगर कुछ भी गलत हो रहा है. आप यह भी समायोजित करने के लिए अपने समारोह में हस्ताक्षर करने के लिए वापसी वैकल्पिक मूल्य के बाद से, विफलता के मामले में आप शायद नहीं होगा TransactionsClassAModel:

func myFunc() async -> TransactionsClassAModel? {

    let url = URL(string: "...")

    do {

        let undecodedData = try await networkingTools.afRequest(url: url!)
        let decodedData = try JSONDecoder().decode(TransactionsClassAModel.self, from: undecodedData)
        /* do anything you need */
        return decodedData // success
    } catch {
        print(error)
        return nil // no object in this case
    }
}

आप कर सकते हैं भी अलग-अलग ब्लॉक है, इसलिए प्रत्येक की कोशिश में है अपने स्वयं के ब्लॉक, जैसे:

func myFunc() async -> TransactionsClassAModel? {

    let url = URL(string: "...")

    var undecodedData: Data // or optional Data? if function can return nil
    do {
        let undecodedData = try await networkingTools.afRequest(url: url!)
    } catch {
        print("Failed in afReqest: \(error)")
        return nil
    }

    var decodedData: TransactionClassModel?
    do {
        decodedData = try JSONDecoder().decode(TransactionsClassAModel.self, from: undecodedData)
    } catch {
        print("Failed in decode: \(error)")
        return nil
    }
    return decodedData
}

आप कर सकते हैं भी अलग-अलग डेटा डिकोडिंग में निजी समारोह है, और वापसी पर उस समारोह कॉल:

private func decodeMyData(_ undecodedData; Data) -> TransactionsClassAModel? {
    do {
        return try JSONDecoder().decode(TransactionsClassAModel.self, from: undecodedData)
    } catch {
        print("Failed in decode: \(error)")
        return nil
    }
}

func myFunc() async -> TransactionsClassAModel? {

    let url = URL(string: "...")

    do {
        let undecodedData = try await networkingTools.afRequest(url: url!)
        return decodeMyData(undecodedData)
    } catch {
        print("Failed in afReqest: \(error)")
        return nil
    }
}
2021-11-23 23:01:03

ओह तो वापस अंदर चला जाता है के साथ पकड़ने के रूप में अच्छी तरह से! उदाहरण के बहुत सारे में इस सवाल का जवाब है, धन्यवाद आप!! यह अध्ययन के रूप में मैं लिखने के इस ।
Albert

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................