Bästa svaret
Du kan inte alltid använda guard
eftersom det kräver en tidig utgång. Det finns ingen negerad if let
-konstruktion, men ditt kodavsnitt visar inte riktigt det intressanta fallet där det missades mest.
Om din kod verkligen inte behöver date
efter if
, behöver du inte använda if let
, testa bara om uttrycket är nil
(not, kod förenklad till Swift3-ish-syntax för relevans och korthet):
if UserDefaults.standard.objectForKey("first\_launch\_date") == nil {
UserDefaults.standard.set(date, forKey: "first\_launch\_date")
}
Men förutsatt att din kod vill att använda date
efter if
(annars varför skulle du ge det ett namn), då behöver du något lite mer besvärligt, som slutar upp med något i if
fallet:
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")
}
Fallet som verkligen besviker jag är dock när jag använder if let
i en kedja av else if
. Ofta (nästan hälften av tiden?) Vill logiken i kedjan av förhållanden testa för en serie negativa slutar med att det andra fallet är det enda positiva tillståndet. Men om ett av villkoren kräver en if let
, måste du uttrycka logiken som ett test för positivt med det andra fallet negativt.
Exempel i pseudokod:
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
}
Om du implementerar detta snabbt innebär att packa upp ett valfritt under parsningstestet, som if let result = parse()
så ” Jag måste snedvrida logiken från fail-fail-success till fail-success-fail. Exempel med lite snabbare pseudokod:
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. Potentiellt skulle en if not let
tillåta den ursprungliga logiken:
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
}
Någon ska skriva ett förslag för snabb utveckling.
Svar
- Registrera dig för ett kostnadsfritt Apple Developer-konto
- Förstå från och med idag (4 juni 2016) Det finns inga handledning för Swift 3.0 eftersom det kommer att presenteras på WWDC nästa vecka. Det tar minst tre månader för författarna att få nya böcker och handledning för Swift 3.0 redo. Undantaget kommer att vara Erica Sadun som är mycket flitig och proaktiv för att få sina böcker upp till den senaste versionen av Swift.
- {Ny} Från och med idag (13 juni 2016) har Apple meddelat Playgrounds för iPAD som ser ut som ett mycket bra sätt för nybörjare att lära sig Swift. ÄVEN, Apple har en ny e-bok som heter, \_App Development with Swift\_, som är en annan bra resurs för den totala språkbörjaren.
- Undvik någonting på Swift 1.0 och håll dig borta från de flesta information om 2.0 och 2.1 och försök hitta information från källor i version 2.2 av Swift eller bättre. Försök också att undvika material med den senaste informationen före november 2015. Detta kommer att förändras om några månader efter att Swift 3.0 är mer tillgängligt. Det finns några betydande syntax- och biblioteksändringar och det kan vara svårt att försöka följa handledningar skrivna i äldre versioner.
- Skaffa en kopia av Apples Swift-handböcker från iBooks. Dessa bör vara de första som är uppdaterade med Swift 3.0
- Bläddra igenom dessa handböcker
- Om du har programmerat på andra språk tidigare, var uppmärksam på Swift-specifika konstruktioner som Apple och 3rd Party programvaruexempel kommer sannolikt att använda dem.
- uppräkningar
- tillval
- felkontroll
- stängningar (syntax och sammanfattning kan vara svårt att förstå)
- struts vs klasser kontra protokoll kontra uppräkningar
- protokollorienterad design
- Referensräkning
- strängar
- generiska
- Snabbt bibliotek
- Funktionella aspekter av språket (relaterat till nedläggningar och biblioteket)
- Bläddra och / eller köp 1–2 e-böcker (eller fysiska böcker) på Swift. Det finns flera bra böcker.
- Det finns mycket mer information och handledning skrivna som förväntar dig att du ska programmera iOS vs Mac OS
- Bestäm om du är mer intresserad av spel eller produktivitet och koncentrera dig mer på en av dessa. Det finns flera böcker och handledning skrivna för spelutveckling och på vissa sätt tycker jag att spel är en lättare plats att lära sig.
- Om du aldrig har skrivit några Apple-applikationer är mitt förslag att lära dig Swift utan att oroa dig för mycket om Objective-C. Ansvarsfriskrivning: Jag ogillar mycket Objective-C. Om du har äldre kod i Objective-C, gå i alla fall och lär dig mer om att överbrygga och använda Objective-C och Swift. Swift Tutorials kommer att ge grunden för vad du behöver veta och du kan inte komma undan det helt eftersom många / de flesta kakaobibliotek / ramar alla är skrivna i Objective-C.
- Om du har ett kreditkort eller betala vän, registrera dig på Lynda. com i en månad gratis och titta på alla videor du kan från Simon Allardice och andra på Swift (och allmänna programmeringskoncept om du behöver det också.)
- Gör samma sak på Pluralsight. com .
- Bläddra på Apple Deve-webbplatsen för alla referensdokument och hur du kommer åt detta från x-Code. Förhoppningsvis har du använt X-Code tidigare. Om inte, bör handledningarna ha gett tillräckligt med information för att komma igång. Detta är viktigt.
- Gå till RayWenderlich. com och titta på alla Swift-videor och e-böcker du kan. För att se alla böcker kan du registrera dig och / eller köpa materialet där. Gör stämningen du är väl utvilad och gör självstudierna själv . Det här är nyckeln.
- Titta på tidigare Apple WWDC-videor på Swift. Läs Apple Swift-manualerna mer noggrant.
- Försök att skriva din egen applikation. Detta visar var du har platser du behöver granska eller lära dig bättre.
- Försök att följa iTunes University / Stanford Course om iOS-utveckling i Swift. Se om du kan hålla jämna steg. Det här är inte en kurs för nybörjare i motsats till vad andra kommer att berätta för dig.
- Jag har sett många, många olika videohandledning på Youtube. För mig är för det mesta det enda bra med dem att de är fria. När du väl har jämfört dem med de självstudier jag har listat tidigare, undrar du varför du slösade bort din tid med dem. Det finns undantag, men du kommer att spendera mycket tid på att slösa bort det genom att titta igenom dem. Jag uppskattar att människor vill skapa sina egna videor. Jag försökte till och med detta en gång. Så jag vet hur mycket energi yrkesverksamma lägger i att göra saker tydliga och förståliga.
- Nu, efter att ha släppt gratis YouTube-grejer, se några av dessa videor och se om de hjälper till att fylla i lite saknad information eller inte . Det är bra att ha alternativa perspektiv.
- Prenumerera på Swift-nyhetsbrev online. RayWenderlich har en bra lista att börja med.
- Läs några av mina och andras inlägg om detta ämne. Måste nog ta reda på hur man slår samman frågor / svar.