Bis zum Start des Kurses
âiOS Developerâ bleibt immer weniger Zeit.
Daher veröffentlichen wir heute weiterhin Material aus der Reihe â10 Fragen zu Swiftâ. Der erste Teil davon kann hier
gelesen werden .

Generika in Swift erklÀren?
Mit Generics (generischen Vorlagen) können Sie flexible, wiederverwendbare Funktionen und Typen schreiben, die mit jedem Typ arbeiten können. Sie können Code schreiben, der Doppelarbeit vermeidet und seinen Zweck klar und abstrakt ausdrĂŒckt.
Die Array- und Dictionary-Typen in Swift sind universelle Sammlungen (Generika).
Im folgenden Code wird eine universelle Funktion zum Austauschen von zwei Werten fĂŒr eine Zeichenfolge und eine Ganzzahl verwendet. Dies ist ein Beispiel fĂŒr wiederverwendbaren Code.
func swapTwoValues<T>(_ a: inout T, _ b: inout T) { let temporaryA = a a = b b = temporaryA } var num1 = 4 var num2 = 5 var str1 = âaâ var str2 = âbâ swapTwoValues(&num1,&num2) swapTwoValues(&str1,&str2) print (ânum1:â, num1)
Was sind optionale Typen in Swift und wann sollten sie verwendet werden?
Optional (optional, âoptionalâ) in Swift ist der Typ, in dem der Wert sein kann oder nicht. Optionen werden durch HinzufĂŒgen von "?" zu jedem Typ.
Optionen fĂŒr die Verwendung des optionalen:- Code-Schnipsel, die möglicherweise fehlschlagen (ich habe etwas erwartet, aber nichts erhalten).
- Objekte, die derzeit leer sind, aber spÀter etwas werden können (und umgekehrt).
Ein gutes Beispiel fĂŒr eine Option:Eine Eigenschaft, die vorhanden sein kann oder nicht , z. B. ein zweiter Vorname oder Ehemann / Ehefrau in der Personenklasse.Eine Methode, die entweder einen Wert oder nichts zurĂŒckgeben kann , z. B. eine Ăbereinstimmung in einem Array.Eine Methode, die entweder ein Ergebnis oder einen Fehler zurĂŒckgeben und nichts zurĂŒckgeben kann, versucht beispielsweise, den Inhalt einer Datei zu lesen (aufgrund dessen normalerweise Dateidaten zurĂŒckgegeben werden), aber die Datei existiert nicht.Delegieren Sie Eigenschaften , die nicht immer festgelegt werden mĂŒssen und normalerweise nach der Initialisierung festgelegt werden.
Wie schwache Glieder im Unterricht . Was sie anzeigen, kann jederzeit auf Null gesetzt werden.
Wenn Sie herausfinden möchten, wann der Wert festgelegt ist (Daten noch nicht geladen> Daten), anstatt eine separate boolesche Variable dataLoaded zu verwenden.
Was ist optionale Verkettung in Swift?
Die Prozesse zum Anfordern, Aufrufen von Eigenschaften, Indizes und Methoden fĂŒr eine Option, die den Wert "nil" haben können, werden als optionale Sequenz (optionale Kette) definiert .Die optionale Sequenz gibt zwei Werte zurĂŒck -
- Wenn die Option einen âWertâ enthĂ€lt, wird der Wert zurĂŒckgegeben, wenn die damit verbundenen Eigenschaften, Methoden und Indizes aufgerufen werden
- Wenn ein optionales Element "nil" enthĂ€lt, geben alle damit verbundenen Eigenschaften, Methoden und Indizes nil zurĂŒck
Eine optionale Sequenz ist eine Alternative zum erzwungenen Auspacken.
Was ist erzwungenes Auspacken?
Das erzwungene Entpacken ist eine Möglichkeit,
den in einem optionalen Wert enthaltenen Wert
abzurufen . Diese Operation ist gefÀhrlich, weil Sie dem Compiler im Wesentlichen sagen: Ich bin sicher, dass diese Option einen echten Wert enthÀlt, extrahieren Sie ihn!
let value: Int? = 1 let newValue: Int = value!
Was ist implizites Auspacken?
Implizites Entpacken : Wenn wir eine implizit entpackte Option definieren, definieren wir einen Container, der das
Entpacken bei jedem Lesen automatisch erzwingt.
var name: String! = âViratâ let student = name
Wenn die implizit entpackte Option Null ist und Sie versuchen, auf den gepackten Wert zuzugreifen, wird ein Laufzeitfehler ausgegeben. Das Ergebnis ist genau das gleiche, als hĂ€tten Sie ein Ausrufezeichen nach dem ĂŒblichen optionalen Zeichen gesetzt, das keinen Wert enthĂ€lt.Was ist optionale Bindung?
Sie können Optionen auf "sichere" oder "unsichere" Weise entpacken. Ein sicherer Weg ist die Verwendung optionaler Bindemittel.
Die optionale Bindung wird verwendet, um zu bestimmen, ob eine Option einen Wert enthĂ€lt. In diesem Fall stellen wir diesen Wert als Zeitkonstante oder Variable zur VerfĂŒgung. Es ist also nicht erforderlich, ein Suffix zu verwenden! um auf seinen Wert zuzugreifen.
let possibleString: String? = "Hello" if let actualString = possibleString {
Was ist eine Guard
und was sind ihre Vorteile?
Die
guard
ist einfach und kraftvoll. Es ĂŒberprĂŒft eine Bedingung und wenn sie als falsch ausgewertet wird, wird die else-Anweisung ausgefĂŒhrt, die normalerweise die Methode beendet.
func addStudent(student: [String: String]) { guard let name = student["name"] else { return } print("Added \(name)!") guard let rollNo = student ["rollNo"] else { print("roll No not assigned") return } print("Assigned roll no is \(rollNo).") } addStudent(student: ["name": "Ravi"])
Der Vorteil von
guard
ist eine
schnellere AusfĂŒhrung .
Guard
Block wird nur ausgefĂŒhrt, wenn die Bedingung falsch ist und der Block durch eine SteuerĂŒbertragungsanweisung wie
return
,
break
,
continue
oder
thrown
. Dies bietet einen frĂŒhen Ausstieg und weniger Klammern. Ein vorzeitiger Ausstieg bedeutet eine schnellere AusfĂŒhrung.
Weitere Informationen finden Sie in
diesem Artikel.
Wann sollte der guard let
verwendet werden und wann if let
?- Verwenden Sie
guard
wenn Sie unerwartete / falsche Eingaben vermeiden möchten, und konzentrieren Sie sich auf das Ziel, wenn Sie alternative Möglichkeiten fĂŒr den Umgang mit Eingaben haben. - Verwenden Sie den
guard
if
else
blockiert, um Verschachtelung und Einkerbung zu reduzieren, da er relativ kompakt ist.
Was ist defer
?
Die
defer
verwendet, um eine Reihe von Anweisungen auszufĂŒhren, kurz bevor die CodeausfĂŒhrung den aktuellen Block verlĂ€sst.
Die
defer
im
if
Block wird zuerst ausgefĂŒhrt. Darauf folgt das LIFO-Muster, um die verbleibenden
defer
Anweisungen auszufĂŒhren.
func doSomething() { defer { print(â1â)} defer { print(â2â)} defer { print(â3â)} if 1<2 { defer { print("1<2")} } defer { print(â4â)} defer { print(â5â)} defer { print(â6â)} } 1<2 6 5 4 3 2 1
Auflisten, welche SteuerĂŒbertragungsoperatoren in Swift verwendet werden?
break
- Die
break
Anweisung beendet die AusfĂŒhrung der gesamten Kontrollflussanweisung sofort.
continue
- Die
continue
Anweisung weist die Schleife an, zu stoppen, was sie tut, und am Anfang der nÀchsten Iteration der Schleife erneut zu beginnen.
return
- gibt Werte von Funktionen zurĂŒck.
throw
- Fehlerweiterleitung mit Wurffunktionen erforderlich
fallthrough
- Die
fallthrough
Anweisung
fallthrough
im switch case-Block verwendet, um die case-Anweisung auszufĂŒhren, die sich basierend auf den Benutzeranforderungen neben den entsprechenden case-Anweisungen befindet.
In
swift
der
fallthrough
Operator verwendet, um den nĂ€chsten Fall auszufĂŒhren, auch wenn er nicht mit dem Original ĂŒbereinstimmt.
let integerToDescribe = 5 var description = âThe number \(integerToDescribe) isâ switch integerToDescribe { case 2, 3, 5, 7, 11, 13, 17, 19: description += â a prime number, and alsoâ fallthrough case 10: description += â case 10.â default: description += â an integer.â } print(description)
Das Ende des zweiten Teils. Der erste Teil kann hier
gelesen werden .
Wir warten auf Ihre Kommentare und erinnern uns, dass es in wenigen Stunden einen
Tag der offenen TĂŒr geben wird , in dessen Rahmen wir ausfĂŒhrlich ĂŒber unseren Kurs sprechen werden.