Middle
Ի՞նչ ավարտի handler եք գրել։
sobes.tech AI
Պատասխան AI-ից
Ես գրել եմ բազմաթիվ ավարտման հենարաններ տարբեր առաջադրանքների համար, ներառյալ՝
- Նետվերների արդյունքների մշակումը (տվյալների ստացում, կատարման կարգավիճակ):
- Ասինխրոնային գործողություններ տվյալների բազայի հետ (պահպանում, ընթերցում, թարմացում):
- Ֆայլային համակարգի գործողություններ (կարդալ, գրել, ջնջել):
- Անիմացիաներ և օգտագործողի ինտերֆեյսներ (անիմացիաների ավարտ, օգտագործողի շարժումների մշակում):
- Անհատականացված ասինխրոնային գործողություններ՝ արդյունքների և սխալների փոխանցման հնարավորությամբ:
Օրինակ, երբ աշխատում եմ URLSession-ի հետ, հաճախ օգտագործում եմ այս ձևաչափը:
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
// Սխալի մշակումը
completion(.failure(error))
return
}
guard let httpResponse = response as? HTTPURLResponse,
(200...299).contains(httpResponse.statusCode),
let data = data else {
// Անվավեր պատասխան կամ տվյալների մշակումը
completion(.failure(URLError(.badServerResponse)))
return
}
// Հաջող տվյալների մշակումը
do {
let model = try JSONDecoder().decode(SomeModel.self, from: data)
completion(.success(model))
} catch {
// Դեկոդավորման սխալի մշակումը
completion(.failure(error))
}
}.resume()
որտեղ completion-ը (Result<SomeModel, Error>) -> Void տեսակի փակագիր է: Result-ի օգտագործումը թույլ է տալիս հստակ տարբերակել հաջող ավարտը և սխալը: