Enum in Class und Initialisierung

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

  • Enum in Class und Initialisierung

    Hallo zusammen,

    kann mir jmd. erklären wieso folgendes nicht funktioniert?

    Ich benutze Xcode 7 Beta 2 und Swift 2.0.


    Quellcode

    1. public class AClassWithEnums {
    2. var aParam: AEnum
    3. public enum AEnum {
    4. case FirstEnum
    5. }
    6. init(_ aParam: AEnum) {
    7. self.aParam = aParam
    8. }
    9. }
    10. /// geht nicht -> Fehlermeldung "could not find member 'AEnum' let testClass = AClassWithEnums(.AEnum.FirstEnum)"
    11. let testClass = AClassWithEnums(.AEnum.FirstEnum)
    12. /// geht
    13. let testClass = AClassWithEnums(AClassWithEnums.AEnum.FirstEnum)
    Alles anzeigen
    Besten Dank im Voraus! Und schade das es kein Syntaxhighlighting für Swift gibt. :(
  • Wenn ich es weglasse geht es, geht es auch irgendwie ohne das ich es weglasse? Weil angenommen ich habe 2 Enums, welche an sich anders heissen jedoch 2 Gleichnamige Cases haben.


    Michael schrieb:

    Noch eine Frage? Warum deklarierst du die enum innerhalb der Klasse, wenn du sie eh public machst?
    Das ist es ja, ich wollte sie eigt. privat haben oder internal, jedoch geht das nicht. Habe versucht eine Beziehung herzustellen zwischen der Class und dem Enum.

    Mein Bespiel-Projekt ist so in der Art von Geschlecht und Tier aufgebaut, ich wollte somit erreichen das das Geschlecht (Enum) eine Beziehung zu der Class (Tier) hat.
  • michaelprzybyla schrieb:

    Wenn ich es weglasse geht es, geht es auch irgendwie ohne das ich es weglasse? Weil angenommen ich habe 2 Enums, welche an sich anders heissen jedoch 2 Gleichnamige Cases haben.
    Ja, siehe Zeile 16 von deinem Codeschnipsel. Du musst die Klasse mit angeben, weil du die enum innerhalb der Klasse deklariert hast. Wenn du keine Klasse angeben willst, muss du die enum außerhalb der Klasse deklarieren.


    michaelprzybyla schrieb:

    Das ist es ja, ich wollte sie eigt. privat haben oder internal, jedoch geht das nicht.
    Ist ja auch logisch. Du kannst keine Initialisierer schreiben, die als Parameter einen Typ erwarten, der nur Klassenintern bekannt sein soll.