Początkowa wartość przypadku wyliczenia musi być literałem
Mam to wyliczenie:
enum GestureDirection:UInt {
case Up = 1 << 0
case Down = 1 << 1
case Left = 1 << 2
case Right = 1 << 3
}
Ale w każdym przypadku pojawia się błąd:
Początkowa wartość przypadku wyliczenia musi być literałem
Nie rozumiem.
Swift 1.2, Xcode 6.3.2
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
4 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Enums obsługuje tylko , które są albo (liczba) (ciągi), albo (bool) dla
język gramatyczny
https://developer.apple.com/li ... ID351
.
Zamiast tego, jako obejście i nadal daj dobry obraz tego, co robisz.
Anonimowy użytkownik
Potwierdzenie od:
użyj w oparciu o zgodnie z sugestią @Vincent.
Jedną z zalet jest to, że wszystkie operacje na bitach są dostępne za darmo.
Oto kompletny przykład roboczy:
Za pomocą:
Aktualizacja dla Swift 2:
od wersji Swift 2 można to zrobić łatwiej
używając nowego protokołu , który oferuje
interfejs podobny do zestawu (zobacz też ostatnio dodane odpowiedzi na pytanie,
Jak utworzyć wyliczenia maski bitowej w stylu NS_OPTIONS w języku Swift?
https://coderoad.ru/24066170/
).
Musimy tylko zdefiniować podstawowy typ pamięci i predefiniowane wartości:
Za pomocą:
Anonimowy użytkownik
Potwierdzenie od:
W moim przypadku musiałem przekonwertować wartości wyliczenia ciągów do użycia w lokalizowalnych ciągach. Więc dodałem tę metodę do mojego wyliczenia.
A potem użyj tego w ten sposób:
gdzie przekazany cellTitle jest tylko jedną z tych wartości wyliczenia CellTitle
Anonimowy użytkownik
Potwierdzenie od:
Jeśli potrzebujesz przykładu lub instrukcji, możesz się temu przyjrzeć
Artykuł NSHipster
http://nshipster.com/rawoptionsettype/
Można to zrobić za pomocą czegoś takiego:
Z poważaniem