सरल ठीक है, एक बनाने 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
}
}