Ich möchte eine Kategorie meiner vorhandenen Swift-Klasse erstellen, aber es gibt keine Option in der IDE, dies zu tun.
Irgendeine Idee, ob eine Kategorie in einem schnellen Projekt existiert? Oder wie erreicht man ähnliche Funktionen in einem schnellen Projekt?
swift
swift-extensions
Khawar
quelle
quelle
extension
.Antworten:
In Swift können Sie
Extensions
vorhandenen Klassen, Strukturen und Aufzählungstypen neue Funktionen hinzufügen.Sie unterscheiden sich in einigen Punkten von den Objective-C-Kategorien, hauptsächlich:
Nach heutigem Stand können Erweiterungen:
Die grundlegende Syntax zum Deklarieren einer Erweiterung lautet wie folgt:
Weitere Informationen zur Verwendung von Erweiterungen in Swift finden Sie in der Apple-Dokumentation .
quelle
In Ziel C wurden sie als Kategorien bezeichnet , in Swift als Erweiterungen . Beide dienen dazu, vorhandenen Klassen zusätzliche Funktionen zu verleihen, ohne Unterklassen erstellen zu müssen.
Ich hatte in der Dokumentation über Erweiterungen gelesen, aber ich habe nicht wirklich verstanden, wie man eine in meinem Projekt verwendet, bis ich mir dieses Tutorial-Video ( YouTube-Version , Github-Quelle ) angesehen habe.
Hier ist eine Zusammenfassung aus dem Video, wie es geht.
Fügen Sie Ihrem Projekt eine Swift-Datei hinzu
Klicken Sie mit der rechten Maustaste in den Projektnavigator und wählen Sie "Neue Datei ...".
Wählen Sie "Swift File"
Die Konvention besteht darin, den Dateinamen als den Klassennamen zu speichern, den Sie erweitern, plus (mit einem "+" - Zeichen), was Sie damit machen. Zum Beispiel "UIImage + Cropping".
Schreiben Sie den Code für die Erweiterung
Öffnen Sie die neue Swift-Datei, die Sie gerade erstellt haben.
Sie sollten
UIKit
(anstelle vonFoundation
) importieren, wenn Sie a erweiternUIView
. Verwenden Sie dann dasextension
Schlüsselwort vor dem Klassennamen, den Sie erweitern möchten. Sie können der Klasse dann Ihre eigenen neuen Methoden hinzufügen. (Beachten Sie, dass Erweiterungen zum Hinzufügen neuer Methoden dienen und vorhandene Methoden nicht überschreiben - daher der Name.)Im Video wurde beispielsweise eine Methode hinzugefügt, mit der ein Kreis aus dem Bild ausgeschnitten und ihm ein Rand zugewiesen wird.
Sehen Sie hier für das gesamte Beispiel.
Verwenden Sie Ihre Erweiterung an einer beliebigen Stelle in Ihrem Projekt
Jetzt können Sie Ihre neue Methode für diese Klasse an einer beliebigen Stelle in Ihrem Code verwenden, genau wie sie Teil der Standardklasse war.
Hier ist das Beispiel des Videos ( auf Github ):
Die Methode
cropToCircleWithBorderColor
ist kein Standardteil vonUIImage
, aber wie Sie sehen, wird sie sozusagen verwendet.Für weitere Studien:
quelle
In Swift heißt es Extensions ! Hör zu
quelle
extension
s kann keine Variablen enthalten, die die Dinge völlig anders machen.Sie können folgenden Code in Ihrer vorhandenen Klasse verwenden
quelle