Swift class{} - Anzahl der Variablen ermitteln, welche einen Wert enthalten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.12.2020 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • Swift class{} - Anzahl der Variablen ermitteln, welche einen Wert enthalten

    Hallo,

    ich verwende eine Klasse basierend auf NSObject in welcher Variablen, teils optimal, zur Verfügung gestellt werden. Bisher habe ich eigens hierfür eine Methode verwendet, welche mir die Anzahl der belegten Variablen ermittelt. Also deren Wert nicht "" bzw. 0 sind.

    Da diese Methode je nach Größe bzw. Anzahl von Variablen des Objektes enorm anwächst, würde ich gerne auf eine in den Frameworks vorhandene Methode zurückgreifen um die Anzahl der verwendeten Variablen zu ermitteln. Sofern so etwas überhaupt existiert?

    Beispiel:

    Quellcode

    1. class Person: NSObject {
    2. var vornamen: String
    3. var nachnamen: String
    4. var alter: Int?
    5. var geschlecht: String?
    6. ....
    7. init(vornamen: String = "", nachnamen: String = "", alter: Int = 0, geschlecht: String = "", ...)
    8. {
    9. self.vornamen = vornamen
    10. self.nachnamen = nachnamen
    11. self.alter = alter
    12. self.geschlecht = geschlecht
    13. ...
    14. }
    15. }
    16. // Nun eine Variable des Arrays auf deren verwendeten/belegten Inhalte auswerten
    17. ...
    18. let person: Person = people[0]
    19. ...
    20. // An dieser Stelle rufe ich nun meine Methode auf, welche mir z.B. folgendes Ergebnis liefert:
    21. let iAnzahl = ermittleAnzahlBelegterVariabelnVon(Person)
    22. print("Innerhalb der Variable person wurden \(iAnzahl) Variablen ein Wert zugewiesen.")
    Alles anzeigen
    An dieser Stelle würde ich gerne auf meine eigene Methode zur Ermittlung der belegten Variablen verzichten, falls eine Möglichkeit besteht dies anderweitig zu ermitteln?

    Danke mal vorab für jede Anregung
  • In Objective-C könntest Du über die Funktionen der Objective-C Runtime den Aufbau der Klasse, also z.B. die definierten Instanzvariablen der Klasse ermitteln.

    Ob Swift eine Objective-C Basisklasse als echte Objective-C Klasse erweitert oder die Erweiterung in Swift separat hält, weiss ich nicht.

    Lass Dir doch mal die definierten Instanzvariablen etc. Deiner Klasse über die Funktionen der Objective-C Runtime anzeigen.
  • Ich wollte mal etwas in Swift nachbauen, dass ich aus RoR kenne. Da habe ich nach Swift Introspect gesucht und irgendetwas auch gefunden. Das ist aber langsam und darum habe ich das dann lieber explizit implementiert. Jedenfalls macht das auch Playground: Variablen von irgendwelchen Objekten ausgeben.

    Weiß nicht mehr genau was ich da gemacht habe, aber das könnte dich interessieren: developer.apple.com/documentation/swift/mirror
  • @MCDan: In Objective-C habe ich dies mal ansatzweise realisiert und es funktioniert einwandfrei. ;) Bin hier am grübeln warum wir die Entwicklung so schnell vollständig von Objektive-C auf Swift umgestellt haben. :/ Leider hilf es nicht weiter darüber zu sinnieren. ?(

    @manoh: Also gefunden habe ich auch etwas, nur einsetzen lässt sich dies nicht wirklich. Die Geschwindigkeit ist nicht gerade berauschend. ;)



    Vielen Dank Euch Beiden. :thumbsup:

    Bin nun zu dem Entschluss gekommen, die von uns entwickelte Methode beizubehalten, auch wenn der Aufwand sich für den Augenblick nicht reduzieren lässt.