Beste antwoord
Je kunt niet altijd guard
gebruiken omdat dat een vroege exit vereist. Er is geen ontkende if let
constructie, maar je codefragment laat niet echt het interessante geval zien waarin het het meest gemist is.
Als je code het echt niet nodig heeft date
na de if
, dan hoef je if let
niet te gebruiken, test gewoon als uitdrukking nil
is (opmerking, code vereenvoudigd tot Swift3-achtige syntaxis voor relevantie en beknoptheid):
if UserDefaults.standard.objectForKey("first\_launch\_date") == nil {
UserDefaults.standard.set(date, forKey: "first\_launch\_date")
}
Maar ervan uitgaande dat uw code om date
te gebruiken volgens de if
(waarom zou je het anders een naam geven), dan heb je iets onhandigs nodig, dat eindigt toch met iets in de if
zaak:
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")
}
Het geval dat echt teleurstelt ik gebruik echter if let
in een keten van else if
. Vaak (bijna de helft van de tijd?) Wil de logica van de keten van voorwaarden testen op een reeks negatieven, waarbij het andere geval de enige positieve voorwaarde is. Als een van de voorwaarden echter een if let
vereist, dan wordt u gedwongen om de logica uit te drukken als een test voor positief, terwijl het andere geval het negatieve is.
Voorbeeld in pseudocode:
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
}
Als het implementeren van dit in swift inhoudt dat je een optie moet uitpakken tijdens de parseertest, zoals if let result = parse()
dan moet je ik moet de logica verdraaien van mislukking-mislukking naar mislukking-succes-mislukking. Voorbeeld met een snellere pseudocode:
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
}
Bah. Mogelijk zou een if not let
de oorspronkelijke logica toestaan:
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
}
Iemand zou een voorstel moeten schrijven voor snelle evolutie.
Answer
- Meld u aan voor een gratis Apple Developer-account
- Begrijp het vanaf vandaag (4 juni 2016) Er zijn geen tutorials voor Swift 3.0 zoals het zal worden onthuld op de WWDC volgende week. Het duurt minstens 3 maanden voordat auteurs nieuwe boeken en tutorials voor Swift 3.0 gereed hebben. De uitzondering is Erica Sadun die erg ijverig en proactief is om haar boeken naar de nieuwste versie van Swift te brengen.
- {Nieuw} Vanaf vandaag (13 juni 2016) heeft Apple Playgrounds aangekondigd voor de iPAD, wat een zeer goede manier lijkt voor beginners om Swift te leren. OOK heeft Apple een nieuw eBook uitgebracht genaamd \_App Development with Swift\_, wat een andere goede bron is voor de totale taalbeginner.
- Vermijd alles in Swift 1.0 en blijf weg van de meeste informatie over 2.0 en 2.1 en probeer informatie te vinden uit bronnen met versie 2.2 van Swift of hoger. Probeer ook materiaal te vermijden met de laatste informatie van vóór november 2015. Dit zal binnen een paar maanden veranderen nadat Swift 3.0 meer beschikbaar is. Er zijn een aantal belangrijke syntaxis- en bibliotheekwijzigingen en het kan moeilijk zijn om tutorials te volgen die in oudere versies zijn geschreven.
- Haal een exemplaar van Apples Swift-handleidingen op van iBooks. Dit zouden de eersten moeten zijn die Swift 3.0 hebben bijgewerkt.
- Blader door die handleidingen
- Als je al eerder in andere talen hebt geprogrammeerd, let dan verder op de Swift-specifieke constructies zoals Apple en 3rd Party softwarevoorbeelden zullen ze waarschijnlijk gebruiken.
- opsommingen
- opties
- foutcontrole
- sluitingen (syntaxis en conc eat kunnen moeilijk te begrijpen zijn)
- structs vs. klassen vs. protocollen vs. opsommingen
- protocolgeoriënteerd ontwerp
- referentietelling
- strings
- generieken
- Swift-bibliotheek
- functionele aspecten van de taal (gerelateerd aan sluitingen en de bibliotheek)
- Blader en / of koop 1 à 2 eBooks (of fysieke boeken) op Swift. Er zijn verschillende goede boeken.
- Er is veel meer informatie en tutorials geschreven in de verwachting dat je iOS versus Mac OS gaat programmeren.
- Bepaal of je meer geïnteresseerd bent in games of productiviteit en concentreer je meer op een van deze. Er zijn verschillende boeken en tutorials geschreven om games te elimineren en in sommige opzichten denk ik dat games gemakkelijker te leren zijn.
- Als je nog nooit Apple-applicaties hebt geschreven, is mijn suggestie om Swift ook zonder zorgen te leren veel over Objective-C. Disclaimer: ik heb een grote hekel aan Objective-C. Als je oude code hebt in Objective-C, ga dan vooral leren over het overbruggen en onderling gebruiken van Objective-C en Swift. De Swift Tutorials bieden de basis van wat je moet weten en je ontsnapt er niet helemaal aan omdat veel / de meeste cacaobibliotheek / frameworks allemaal in Objective-C zijn geschreven.
- Als je een creditcard hebt of betaal vriend, meld je aan bij Lynda. com voor een maand gratis en bekijk alle videos die je kunt van Simon Allardice en anderen op Swift (en algemene programmeerconcepten als je dat ook nodig hebt).
- Doe hetzelfde op Pluralsight. com .
- Blader door de Apple Deve-site voor alle referentiedocumenten en hoe u deze opent via x-Code. Hopelijk heb je X-Code eerder gebruikt. Zo niet, dan zouden de tutorials voldoende informatie moeten hebben gegeven om u op weg te helpen. Dit is belangrijk.
- Ga naar RayWenderlich. com en bekijk alle Swift-videos en eBooks die je kunt. Om alle boeken te zien, kun je je daar aanmelden en / of de materialen kopen. Zorg ervoor dat u goed uitgerust bent en doe de tutorials zelf . Dit is de sleutel.
- Bekijk de eerdere Apple WWDC-videos op Swift. Lees de Apple Swift-handleidingen aandachtiger.
- Probeer uw eigen applicatie te schrijven. Dit laat zien waar je plaatsen hebt die je nodig hebt om te beoordelen of om beter te leren.
- Volg de iTunes University / Stanford-cursus over iOS-ontwikkeling in Swift. Kijk of je het bij kunt houden. Dit is geen cursus voor beginners, in tegenstelling tot wat anderen je zullen vertellen.
- Ik heb heel veel verschillende video-tutorials op YouTube bekeken. Voor mij is het enige goede aan hen dat ze vrij zijn. Als je ze eenmaal vergelijkt met de tutorials die ik eerder heb opgesomd, zul je je afvragen waarom je je tijd ermee verspilde. Er zijn uitzonderingen, maar u zult er veel tijd aan besteden om er doorheen te kijken. Ik waardeer het dat mensen hun eigen videos willen maken. Ik heb dit zelfs een keer geprobeerd. Dus ik weet hoeveel energie de professionals steken in het duidelijk en begrijpelijk maken van dingen.
- Nu, nadat je de gratis YouTube-dingen hebt verspreid, bekijk je een paar van die videos en kijk je of ze helpen bij het invullen van ontbrekende informatie of niet . Het is goed om alternatieve perspectieven te hebben.
- Abonneer u op Swift online nieuwsbrieven. RayWenderlich heeft een goede lijst om mee te beginnen.
- Lees enkele van mijn en andere berichten over dit onderwerp. Moet waarschijnlijk uitzoeken hoe vragen / antwoorden kunnen worden samengevoegd.