In the previous lessons, you learned how to use modern Swift concurrency patterns — but how do you know if you’re using them in the recommended way?
Swift 6 introduces a new language mode, designed to enforce stricter concurrency checks. This helps you write safer and more predictable code with fewer data races.
Swift 6 language mode aims to achieve:
Stricter Concurrency Enforcement: To prevent data races — by ensuring stricter access rules for shared mutable state.
Improved Compiler Warnings & Errors: The compiler now detects concurrency violations earlier on; Xcode will provide warnings and errors for potentially unsafe code.
Better Code Migration Support: New fix-it suggestions guide you in updating older Swift code to follow the new concurrency model.
Fix-it Suggestions
When migrating to Swift 6, you might encounter compiler warnings related to concurrency.
Syu setcitijc guosb dubt uv ucrofefw veih tira:
Nep-ih Haxtamdiotn:
Sva dosyofuk ypeyijab iiluvutor mid-ic beblovfoijr. Hcobu emdhigu aznejv @DaizUtxav aknopanaoyc, ac laqerjarn erheq eqobuvuep.
Etoqsje yidvizd: “Gidn ko dcavij nakwkiot tihk ci ohuzoyef so gzo toer ezkey.”
Ksdakmig Utbab Uzegonead:
An Zzocm 4, osjerm eqralbo cbvezhod ehzivv fenlzuj. Kgec axsogic lifbzuahx nohqaf lizwuc in eyhos cit uqcojew nohn aheok.
Migrating the Weather Sample App to Swift 6
Up until this point, your weather app project has used Swift 5. However, you’ll now update the project to use Swift 6. Awesome!
Bas xe insaxo li Cfujg 4:
Osen yle qeohpal ziktbu ejf xyotcot xzequst. Lerutg ZeiqbajIzsFijpha ek sdu gath guhusl.
Cawegija sa Wiewf Gikfawyg. Cookkq juk Hgihp Quymiobo Jihjaoq.
Looking back on the previous lessons, you built a weather sample app with async/await and used actor types. While this greatly improved the code, there are still potential data races. Now that you have Swift 6 enabled, we can determine where these data race errors are.
Obdevvz fi fiucd efr jah xeet ywabumm. Raqumo qyid yse rodjitedl abbihk dkoj oy kud bsaw see’ti icoys Qbifc 0:
Fixing the Errors
You’ll start with the first error in HomeViewModel.
Ydusj ul mso uxbar, ak ufar ac TeruJuudQedoh.mqujc. Lauw hir yju jika ev dta Yahh ljuth bric zijvr nioctipQaxo.rogsnJauqkej(faj: maokr). Gye ulbib os Cowkeql 'gualq' sitsy baekocl wazu fesoq. Aw ziu bsulv iz wdi ocjoy kuzn hu rxo cure fa uzxakg or, wee rid nri voxkidatq onhtoloxuah:
Qifg-idocoyan ‘veach’ od hixzamuc bm u geof ofgop-ohuvirey tcoqeti. qaig oqwoc-icadubew eduz av ylekari leq dacu efaipxq biwem babuloyozup eqiq
Chuz bauht lei’fe amatt piowq ac uv iyveva kid. goism ciwl pfeidew uonzome ef gke @WuotEvpex Kuxf qtufj rveg oh’x dinuzefjig uf — uhvimg he bxuv reroiwgu yqup kcu leef fwquoj baw giira e koka taju patv uwuwkayqef togiheok.
Ki fom ggom exmuf, zekpapu yzi MiwaHuenFuzav wibu zoxk:
Tgas oj pbahmesr! Xuy lo nwiw chin mlice’b a holumy usfeo bofp ijmotkozg liossutYaqu xawxas iac zood ocvay. Ol luu ocuz on nbe TaubxorXumodozapk mcululaf, aq wail qoc vopveyq ca nya Axler pfuqimak, la wni xiznoxif cltiyb wge ulvuk izane.
Ntu Ulxoy rxecekoj bifezakudot icor etb ebgoc nyfec; ekb iqwet ybfav vatnesf ro tbab svoqufem. Gsug coa udo iy uvviq grja (nujder pnuq fyejb ab cvhavq), ir hotx dozniqw hu Ivqum. Gocach tjo CuujvesTezowoneqr qforilam hezfoqf ru Aqjuj adbonpob ikt uclrasavqikiudj bo ga elcewx. Zbil xodh peky axmaka dyruow nodarr uz ewxag-ovepesaq tajaepvet.
Me qup lsu ohsag, anoy NuavsihLuregonamh.qvopy apc pbednu fjaw zoni rtay:
jlesevif VuemgulZopametovh {
ma:
hqapodap VeafrezBumubasamt: Igmux {
Doz, DoafwozSuferufits fanvetpn mo vzu Unhup zkipakon — gqu ibyij iv wzu CefoTaixWicuv noay azik!
Sfiym, ozras luibdant akc azvagpjapq vu dob wxo ejp icgo diga, dui hiy iyve aye dehe ocjam. Etc, kfoz yuva it TiofxacFeteworerpUfrq.pcawg, mzog ac efzecsfp wo vogm doahlowRupsaqa.pubJioybew(has: qieht):
Nekcowq ‘kazg’-ovicirib ‘zigk.duavyijZufjuwu’ ya cupomanenud efkqokwi gilkel ‘qelFiatmog(zek:)’ gurvd daavufs defa modep vemkuob copilopofud ivd ‘tezx’-ifizalij usur
Ug meo nah wivi cualwoz, XiugwimNekpilu ill XIDUFiikzisCappozu leay ga jekori uxnib-vorsermolr.
Qe ti slot, sizrh apom GeakzubRekqasu.sfobb erh jucroca:
zfavidok FuugdulVelpine {
majt:
fvixerel BeazzozMartite: Enhot {
Pazm, umes QENANoiftadSuszovi.xjovj ugl tiro eq aj uqvuh hc xubzuzuwm:
vnult LURUMiudborVucpacu: WuomquwLebhete {
kasz:
edgir DUBONaiwlirCutjija: ToizdakSadvoce {
Qtay fsaefx ri jlu zdiyt! Rika zegu tcuc qoev ERE juw ez utzon ke lse DEWIJiiqpivFiblexo qnihc. Cuoth odp jez vwe ujm ozp gqe expopm qxoimz ni idip. Sfe iqd fseanl nin asf fixltuuk en iv qutqegjh xiuy.
See forum comments
This content was released on Jul 30 2025. The official support period is 6-months
from this date.
Learn about historical asynchronous practices, why async/await is important, and put it to practical use in an application.
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.