Beste svaret
Du kan ikke alltid bruke guard
fordi det krever en tidlig avslutning. Det er ingen negert if let
-konstruksjon, men kodebiten din viser ikke det interessante tilfellet hvor den savnet mest.
Hvis koden din virkelig ikke trenger date
etter if
, trenger du ikke å bruke if let
, bare test hvis uttrykk er nil
(merk, kode forenklet til Swift3-ish syntaks for relevans og kortfattethet):
if UserDefaults.standard.objectForKey("first\_launch\_date") == nil {
UserDefaults.standard.set(date, forKey: "first\_launch\_date")
}
Men forutsatt at koden din vil være å bruke date
etter if
(ellers hvorfor vil du gi det et navn), så trenger du noe litt mer vanskelig, som ender opp med noe i if
saken tross alt:
let date: Date
if let existingDate = UserDefaults.standard.objectForKey("first\_launch\_date") {
date = existingDate
} else {
date = Date()
UserDefaults.standard.set(date, forKey: "first\_launch\_date")
}
Saken som virkelig skuffer meg er imidlertid når du bruker if let
i en kjede av else if
. Ofte (nær halvparten av tiden?) Ønsker logikken i kjeden av forhold å teste for en rekke negativer som ender med at den ellers saken er den ene positive tilstanden. Men hvis en av betingelsene krever en if let
, må du imidlertid uttrykke logikken som en test for positiv, med det andre tilfellet negativt.
Eksempel i pseudokode:
if error {
failure
} else if unexpected-format {
failure
} else if parse-failed {
failure
} else if result is a {
handle result a
} else {
handle result b
}
Hvis du implementerer dette raskt, innebærer det å pakke ut et valgfritt under parsetesten, som if let result = parse()
så » Jeg må forvride logikken fra fail-fail-success til fail-success-fail. Eksempel med en raskere pseudokode:
if error {
failure
} else if unexpected-format {
failure
} else if let result = parse() {
if result is a {
handle result a
} else {
handle result b
}
} else {
failure
}
Yuck. Potensielt vil en if not let
tillate den opprinnelige logikken:
if error {
failure
} else if unexpected-format {
failure
} else if not let result = parse() {
failure // unlike if let, result not available to this code block
} else if result is a { // however it would be to everything after
handle result a
} else {
handle result b
}
Noen bør skrive et forslag for rask utvikling.
Svar
- Registrer deg for en gratis Apple Developer-konto
- Forstå fra i dag (4. juni 2016) Det er ingen opplæringsprogrammer for Swift 3.0, da den blir avduket på WWDC neste uke. Det vil ta minst 3 måneder for forfattere å få nye bøker og veiledninger for Swift 3.0 klare. Unntaket vil være Erica Sadun som er veldig flittig og proaktiv med å få bøkene sine opp til den nyeste versjonen av Swift.
- {Ny} Per i dag (13. juni 2016) har Apple kunngjort Playgrounds for iPAD, som ser ut som en veldig god måte for nybegynnere å lære Swift. Apple har også en ny e-bok, \_App Development with Swift\_, som er en annen god ressurs for den totale språkbegynneren.
- Unngå noe på Swift 1.0 og hold deg unna de fleste informasjon på 2.0 og 2.1 og prøv å finne informasjon fra kilder på versjon 2.2 av Swift eller bedre. Prøv også å unngå materiale med den nyeste informasjonen før november 2015. Dette vil endres om noen måneder etter at Swift 3.0 er mer tilgjengelig. Det er noen betydelige syntaks- og bibliotekendringer, og det kan være vanskelig å prøve å følge opplæringsprogrammer skrevet i eldre versjoner.
- Få en kopi av Apples Swift-manualer fra iBooks. Disse bør være de første oppdaterte med Swift 3.0
- Bla gjennom håndbøkene
- Hvis du har programmert på andre språk før, må du være mer oppmerksom på Swift-spesifikke konstruksjoner som Apple og 3. part programvareeksempler vil sannsynligvis bruke dem.
- oppregninger
- valgfrie
- feilkontroll
- nedleggelser (syntaks og conc eat kan være vanskelig å forstå)
- structs vs. klasser vs. protokoller vs oppregninger
- protokollorientert design
- Referansetelling
- strenger
- generiske
- Swift-bibliotek
- funksjonelle aspekter ved språket (relatert til nedleggelser og biblioteket)
- Bla gjennom og / eller kjøp 1–2 e-bøker (eller fysiske bøker) på Swift. Det er flere gode bøker.
- Det er mye mer informasjon og veiledninger skrevet som forventer at du skal programmere iOS vs. Mac OS
- Finn ut om du er mer interessert i spill eller produktivitet og konsentrer deg mer om en av dem. Det er flere bøker og opplæringsprogrammer skrevet for spillutvikling, og på noen måter tror jeg spill er et lettere sted å lære.
- Hvis du aldri har skrevet noen Apple-applikasjoner, er mitt forslag å lære Swift uten å bekymre deg for mye om Objective-C. Ansvarsfraskrivelse: Jeg liker ikke Objective-C. Hvis du har eldre kode i Objective-C, kan du i det hele tatt gå og lære om bro og inter-bruk av Objective-C og Swift. Swift Tutorials vil gi grunnlaget for det du trenger å vite, og du kan ikke unnslippe det helt fordi mange / de fleste kakaobibliotek / rammeverk er skrevet i Objective-C.
- Hvis du har et kredittkort eller betal venn, registrer deg på Lynda. com i en måned gratis og se alle videoene du kan fra Simon Allardice og andre på Swift (og generelle programmeringskonsepter hvis du trenger det også.)
- Gjør det samme på Pluralsight. com .
- Bla gjennom Apple Deve-nettstedet for alle referansedokumentene og hvordan du får tilgang til dette fra x-Code. Forhåpentligvis har du brukt X-Code før. Hvis ikke, burde opplæringene ha gitt nok informasjon til å komme deg i gang. Dette er viktig.
- Gå til RayWenderlich. com og se alle Swift-videoene og e-bøkene du kan. For å se alle bøkene kan du registrere deg og / eller kjøpe materialene der. La saksøke du er godt uthvilt og faktisk gjør veiledningene selv . Dette er nøkkelen.
- Se de siste Apple WWDC-videoene på Swift. Les Apple Swift-håndbøkene mer nøye.
- Prøv å skrive din egen applikasjon. Dette viser hvor du har steder du trenger å se gjennom eller lære bedre.
- Prøv å følge iTunes University / Stanford Course om iOS-utvikling i Swift. Se om du kan følge med. Dette er ikke et kurs for nybegynnere i motsetning til hva andre vil fortelle deg.
- Jeg har sett mange, mange forskjellige videoveiledninger på Youtube. For meg er for det meste det eneste gode med dem at de er gratis. Når du har sammenlignet dem med veiledningene jeg har listet opp tidligere, vil du lure på hvorfor du kaster bort tiden din med dem. Det er unntak, men du vil bruke mye tid på å kaste bort det på å se gjennom dem. Jeg setter pris på at folk vil lage sine egne videoer. Jeg prøvde dette til og med en gang. Så jeg vet hvor mye energi fagpersonene legger i å gjøre ting klare og forståelige.
- Nå, etter å ha løsnet de gratis Youtube-tingene, kan du se noen av disse videoene og se om de hjelper med å fylle ut manglende informasjon eller ikke . Det er bra å ha alternative perspektiver.
- Abonner på Swift online nyhetsbrev. RayWenderlich har en god liste å starte med.
- Les noen av mine og andres innlegg om dette emnet. Må sannsynligvis finne ut hvordan du kan slå sammen spørsmål / svar.