(Wenig) Spaß mit enums

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

  • (Wenig) Spaß mit enums

    Ich hab hier viele Strings in verschiedenen Versionen. Ca. 80 String und 6 Versionen. Die werden nach bestimmten Kriterien auf verschiedene Structs und Klassen verteilt.
    Bisher habe ich für jede Version ein Dictionary mit Strings. Das ist ein bisschen unhandlich, die Keys hätte ich gerne mit autocompletion und die Values nicht als Optionals.

    Heute habe ich mal den Tag damit versucht das als Enums zu implementieren,

    Quellcode

    1. enum ProfileVersion: String {
    2. case v1_1_0 = "1.1.0"
    3. case v1_2 = "1.2"
    4. case v1_3 = "1.3"
    5. }
    6. enum Profile {
    7. enum v1_1_0: String {
    8. case meta = "Meta"
    9. case identifier = "Identifier 1.1.0"
    10. }
    11. enum v1_2: String {
    12. case meta = "Meta"
    13. case identifier = "Identifier 1.2"
    14. }
    15. enum v1_3: String {
    16. case meta = "Meta 1.3"
    17. case identifier = "Identifier 1.3"
    18. case invoiceLineItemZusatzattributGruppeTarifkennzeichenKennzeichenSondertarif = "KennzeichenSondertarif"
    19. }
    20. }
    21. func druckeProfile(version: ProfileVersion) {
    22. var profile = (version == .v1_3) ? Profile.v1_3.self : (version == .v1_2) ? Profile.v1_2.self : Profile.v1_1_0.self
    23. var profile1 = Profile.v1_2.self
    24. let profile3 = Profile.v1_3.self
    25. printIt()
    26. func printIt() {
    27. print(profile1.meta)
    28. print(profile3.identifier)
    29. print(profile.invoiceLineItemZusatzattributGruppeTarifkennzeichenKennzeichenSondertarif)
    30. }
    31. }
    32. druckeProfile(version: .v1_3)
    Alles anzeigen
    Hat da jemand tolle Ideen?
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • mir ist der usecase nicht klar. Kannst du ein wenig mehr über das große Ganze erzählen damit man sich ein Bild machen kann wofür das eingesetzt wird?

    normalerweise sind strings bei mir im Programm ja so gut wie immer Texte die lokalisiert werden müssen (es sei denn sie werden vom User eingegeben) und da macht es keinen Sinn diese in komplexe Code-Strukturen einzubauen weil sie dann kein nicht Programmierer übersetzen kann
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Ich bin nicht sicher, Problem / Anforderung korrekt verstanden zu haben, aber mein Reflex wäre eine Text-Datei als Resource, in der ich z. B. zeilenweise die Texte je Version pflegen würde. Das Ganze so, dass man es übersichtlich im Editor bearbeiten kann. Dann eine "Hilfs-Klasse", welche diese Datei einmalig liest, z. B. per NSScanner parst und über entsprechende Methoden den jeweiligen Text zurückgibt. Die Schlüssel könnte man - zwecks Autocompletion - in Konstanten definieren.

    So halte ich es z. B. mit umfangreichen Farbpaletten...

    Aber vielleicht ist das zu "old school" - und definitiv nicht Swift-like ;)

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.