Gibt es eine Möglichkeit, verknüpfte Objekte in Swift festzulegen?
Kommen von objective-C können Sie rufen Sie die Funktion objc_setAssociatedObject
zwischen 2 Objekten zu haben, Sie erhalten einen Verweis, was praktisch sein kann, wenn bei der Laufzeit, die Sie nicht möchten, dass ein Objekt zerstört werden, bis die Referenz ebenfalls entfernt. Tut swift ähnliches?
Kommentar zu dem Problem
Sie können mit
objc_setAssociatedObject
aus Swift: developer.apple.com/library/prerelease/ios/documentation/Swift/... LANGE BEISPIEL MIT dem VOLLSTÄNDIGEN CODE Ausschneiden und einfügen: stackoverflow.com/documentation/swift/1085/associated-objects/...
InformationsquelleAutor der Frage amleszk | 2014-06-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein einfaches, aber vollständiges Beispiel, abgeleitet aus jckarter Antwort.
Es zeigt, wie durch hinzufügen einer neuen Eigenschaft zu einer vorhandenen Klasse. Es tut dies durch die Definition einer berechneten Eigenschaft in eine Erweiterung block. Die berechnete Eigenschaft gespeichert ist, als ein Objekt zugeordnet:
EDIT:
Wenn Sie unterstützen müssen immer den Wert einer nicht initialisierten Eigenschaft und vermeiden, dass der Fehler
unexpectedly found nil while unwrapping an Optional value
, können Sie ändern, getter wie diese:InformationsquelleAutor der Antwort Klaas
Unterstützt die Lösung alle Wert-Typen als gut, und nicht nur derer, die automatisch überbrückt, wie String, Int, Double, etc.
Wrapper
Einer möglichen
Klasse Erweiterung (Beispiel der Nutzung)
InformationsquelleAutor der Antwort HepaKKes
Offensichtlich funktioniert dies nur mit Objective-C-Objekte. Nach dem hantieren mit diesem ein bisschen, hier ist, wie die Aufrufe in Swift:
InformationsquelleAutor der Antwort DarkDust
Update in Swift 3.0
Dies ist z.B. ein UITextField
InformationsquelleAutor der Antwort flame3
Klaas beantworten, nur für Swift 2.1:
InformationsquelleAutor der Antwort RhodanV5500
Fügen Sie einfach
#import <objc/runtime.h>
auf Ihre brindging header-Datei zugreifen objc_setAssociatedObject unter swift-codeInformationsquelleAutor der Antwort jaumard
Den oben genannten Freundin hat Ihre Frage beantwortet, aber wenn es um den abschlusseigenschaften, bitte beachten Sie:
``
``
InformationsquelleAutor der Antwort Alpface