Video: Generics - Die beste Art um duplizierten Code zu vermeiden | Swift (Deutsch / German) 2024
In Swift werden Backing-Variablen explizit angegeben, falls erforderlich (normalerweise in Code umgewandelt von Objective-C). Außerdem müssen Getter das Schlüsselwort get nicht verwenden. Schnelle Eigenschaften können Variablen oder Konstanten sein. Jeder Typ kann wie folgt gespeichert oder berechnet werden:
-
Deklarieren einer Variableneigenschaft: Eine Variable wird mit dem Schlüsselwort var wie folgt eingeführt:
var _fetchedResultsController: NSFetchedResultsController? = nil
-
Deklaration einer Konstanteneigenschaft: Eine Konstante (dh eine Eigenschaft, die nicht geändert werden kann) wird mit dem Schlüsselwort let eingeführt. Die vorherige Deklaration kann geändert werden, um eine Konstante wie folgt zu deklarieren:
Lassen Sie _fetchedResultsController: NSFetchedResultsController? = nil
-
Deklarieren einer gespeicherten Eigenschaft: Die Deklaration von _fetchedResultsController in der folgenden Auflistung ist eine typische Deklaration einer gespeicherten Eigenschaft . Eine gespeicherte Eigenschaft ist eine Eigenschaft, die als Teil einer Instanz der Klasse, Aufzählung oder Struktur gespeichert wird.
// MARK: - Abgerufener Ergebnis-Controller var fetchedResultsController: NSFetchedResultsController {if _fetchedResultsController! = nil {return _fetchedResultsController!} let fetchRequest = NSFetchRequest () // Bearbeiten Sie den Entitätsnamen entsprechend. let Entität = NSEntityDescription. entityForName ("Ereignis", inManagedObjectContext: selbst. managedObjectContext!) fetchRequest. entity = entity // Setzen Sie die Stapelgröße auf eine geeignete Zahl. fetchRequest. fetchBatchSize = 20 // Bearbeiten Sie den Sortierschlüssel entsprechend. let sortDescriptor = NSSortDescriptor (Schlüssel: "timeStamp", aufsteigend: false) let sortDescriptors = [sortDescriptor] fetchRequest. sortDescriptors = [sortDescriptor] // Bearbeiten Sie den Pfadnamen des Abschnittsnamens und ggf. den Cachennamen. // nil für den Pfadnamen der Abschnittsnamen bedeutet "keine Abschnitte". let aFetchedResultsController = NSFetchedResultsController (fetchRequest: fetchRequest, managedObjectContext: selbst. managedObjectContext!, sectionNameKeyPath: nil, cacheName: "Master") aFetchedResultsController. delegate = self _fetchedResultsController = aFetchedResultsController var Fehler: NSError? = Null wenn! _gelesenerResultsController!.. performFetch (& error) {// Ersetze diese Implementierung durch Code, um // den Fehler entsprechend behandeln zu können. // abort () veranlasst die Anwendung, ein // Crash-Protokoll zu generieren und zu beenden. Sie sollten diese // Funktion nicht in einer Versandanwendung verwenden, obwohl dies // während der Entwicklung nützlich sein kann. println ("Ungelöster Fehler (Fehler), (Fehler. BenutzerInfo)") abort ()} return _fetchedResultsController!} var _fetchedResultsController: NSFetchedResultsController?= nilBy default, die Variable, die an den Setter übergeben wird, heißt newValue,
und Swift verwendet den entsprechenden Typ dafür.
Das Beispiel verwendet ein Objective-C-Muster für eine Backing-Variable: Swift-gespeicherte Eigenschaften müssen nicht mit einem Sonderzeichen wie einem Unterstrich beginnen. Sie müssen jedoch initialisiert und mit einem Typ versehen werden (möglicherweise aus der Initialisierung abgeleitet), bevor sie verwendet werden.
var_fetchedResultsController: NSFetchedResultsController? = nil
-
Deklarieren einer berechneten Eigenschaft mit einem Getter und einem Setter: Dieser Punkt verdient ein wenig Aufschluss. Die Auflistung zeigt einen grundlegenden Getter und Setter einer Swift-Eigenschaft. Sie können sehen, dass myVar eine Backing-Variable von myInt hat. Die Get- und Set-Schlüsselwörter identifizieren den Getter und den Setter.
var myInt: Int = 0 var meinVar: Int {get {return myInt} set {myInt = newValue}} myVar = 20
So erstellen Sie eine berechnete Eigenschaft .
Zusätzlich zu den in der folgenden Abbildung gezeigten Gettern und Setter können Sie Beobachter wie in der nächsten Auflistung gezeigt verwenden. Dieser Code befindet sich im DetailViewController. schnelle Datei von Locatapp (aus der Vorlage Master-Detailanwendung).
var detailItem: BeliebigesObjekt? {didSet {// Aktualisiere die Ansicht. selbst. configureView ()}} Legen Sie in dieser Methode einen Haltepunkt fest, und führen Sie die Anwendung in iOS Simulator aus. Die Schaltfläche bewirkt das Aufrufen der Methode.
Dies ist ein guter Ort, um einen Ansichts-Updater aufzurufen (was genau in der Vorlage geschieht). Es gibt zwei Beobachter, die Sie verwenden können:
-
didSet: Dies wird nachträglich aufgerufen.
-
willSet: Dies wird kurz vor der Einstellung aufgerufen.