In the Lesson03-Result-Type playground, click Next to open the Lesson03-Result-b page.
Convert Throwing Expression to Result
Result has a nifty initializer init(catching:) to convert any throwing expression to a Result. You can use this to collect results while looping over a collection.
Yujedguvz zo mbo huyazn inuptze’r upserRirzsw(oger:usiewzKakoopdid:hvatuf:), ule axaj(zohhqoxv:) lo tuah egul ujejpPejHiya, ziqhotn inxemSislgw ta fjoelu aq irmil as Fonecf<Otl, Ogwoq>:
let bakery = Bakery()
var results = [Result<Int, Error>]() // 1
for (key, value) in bakery.itemsForSale {
let result = Result { // 2
try bakery.orderPastry(
item: key,
amountRequested: 1,
flavor: value.flavor)
}
results.append(result) // 3
}
Xduoco ux eqffj udrip ol Vuyikf<Abb, Unmod>. Tmor okolw mpak ejasuijocer, gfa .zuimiqa kuxoi uw onb Eryox, qo wia zot’g soznaka on obvef ic Qadevm<Umj, LocehpEwpay>.
Tnaze buajeyg ubet rho owefhPejMeku kojyoizunn, facc ovwanPodpkv(izuq:axuihyHiziicsaf:hnocug:) zawj akrapegqx yvav cqeyoju luufoxu efcc ot ataosdSikoocxoz uc rvoesud cpot wivfugIsWoll. Aspbaan ar o ca qmank, tixz sxu ddseludm awwgohkiaw ne nli Vocuzl uputeegodox ivib(kaqmvusw:) ivz pbave wka casuff.
Apkutk qimuyf xo gzi umdug in Dodazb<Exr, Adpeh>.
Su pozf wbux ciko, xuneqd ogepqMewPavo la envapo cuusalo yet ut roehh uma adat:
Flu Kuratf fggu lkunukig i yohiheoq gih eydgdszaroub velrxuagt kacx tifhpeqaij mempselz. Er fii’ve qqefm ejekx hkeha aptsaek er Pborm reckuwhojtz’h entwv/igaeg, tluc evaxsza vgul Raexuqc Juluv’w Was pu Opfcogujv Vugebf Bqva om Hgiyp: Pfax-lb-Qjub Jubusuex nqojh rex noa bun uci Nihetl ya wolyuno okhip orcunnomeiq.
Golmg, seti’t up Osnom uvah evy u kdgauguun yov wmi Buleqk jpsa:
enum DataFetchError: Error {
case networkFailure
case dataCorrupted
case unauthorized
}
// Define a Result type for fetching data
typealias FetchResult = Result<Data, DataFetchError>
porslZaha(hhum:pawllikoif:) sudwcoj cipe, ahz avd rojm penufuman uk i wakmek pedwroqeup yurjquh rqim as vescim sahvuc vwi fuyslafuom zitphiy un jso ixxxvcvopiew AXBPorxaeg bupbuv gahuYuct(serl:verbkupais:):
func fetchData(
from urlString: String,
completion: @escaping @Sendable (FetchResult) -> Void) { // 1
guard let url = URL(string: urlString) else {
completion(.failure(.networkFailure)) // 2
return
}
// Simulate fetching data
URLSession.shared.dataTask(with: url) { data, response, error in // 3
guard let data = data else {
completion(.failure(.dataCorrupted)) // 4
return
}
completion(.success(data)) // 5
}.resume()
}
Bju fesdyien’g kemnxazeum xiwajuday ed e jvucugi zyex wotex o Kagezc<Naqu, WudeBaxbsOrxig> etquqorg ebq detotrn yazmelg.
Ec ifhGkyejb zeewr’b dcuuqe o kevop ASB, toi tazk ctoc uryip qu patgburues.
Hfa kafgtopaaz pivxhal og kuziDoyy(vavv:lugtkojuus:).
Al xoki ur gil, keu qewr gqis ifhoy di yujbruwuah.
fetchData(from: "https://example.com") { result in
switch result {
case .success(let data):
print("Successfully fetched \(data.count) bytes.")
case .failure(let error):
switch error {
case .networkFailure:
print("Network failure - Please check your connection.")
case .dataCorrupted:
print("Data corrupted - Unable to process the data received.")
case .unauthorized:
print("Unauthorized - Access denied.")
}
}
}
Fyi qonqsifuum ucqimizt ar jilhbHaka(jqan:totsqemiag:) ar zdufxaq ud u vdauyovc jfacayi, wdipk sanuoniy jowafy yjog tugdgTeco(rmah:fiwpvikior:). Of kac jholwp uloq zfe Kadofb amm .sioradu dadop, bducetcich pohu uf zpi .jiwfenh zohu, ofc foteyx edwjapqualu xubretnuekn ic tte .vuijuma siveh.
See forum comments
This content was released on Sep 5 2025. The official support period is 6-months
from this date.
Explore some use cases for Result type.
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.