Die Anleitung zu Swift Enum
1. Was ist Swift Enum?
Im Swift benutzen wir den Schlüsselwort enum um eine Kollektion der Menge von den festen und listierten Elemente zu definieren. Sie können nicht hinzufügen oder vermindern. Zum Beispiel, Sie können eine Kollektion der Wochentage (Montag, Dienstag... Sonntag) definieren
Ohne enum können Sie 7 Konstante für die Vertretung der Wochentage definieren um eine Kollektion der Wochentag zu schaffen
WeekDayConstants.swift
import Foundation
// Die Definition von 7 Konstante, die die Daten in der Woche definiert
let CONST_MONDAY = 2;
let CONST_TUESDAY = 3;
let CONST_WEDNESDAY = 4;
let CONST_THURSDAY = 5;
let CONST_FRIDAY = 6;
let CONST_SATURDAY = 7;
let CONST_SUNDAY = 1;
Eine Funktion bezeichnet eine Aufgabe für jeden Tag in einer Woche (wie ein Zeitplan)
GetJobByDay.swift
import Foundation
// Der übertragene Parameter sind die Daten der Wochen
// und die Rückgabeswert ist die Aufgabe
func getJobByDay(dayInWeek: Int) -> String {
if (dayInWeek == CONST_SATURDAY
|| dayInWeek == CONST_SUNDAY) {
return "Nothing";
}
return "Coding";
}
Wir können sehen, dass die Code wie oben nicht sicher ist. Zum Beispiel wenn Sie die Wert für die Wochentage vielleicht zusammentreffend eingeben, oder die Aufruf der Funktion getJobByDay(Int) aber die Übertragung der Wert außer der vorher definierten Wert.
- Kein sicheres Typ: zum ersten ist es kein sicheres Typ. Sie können die Methode getJobByDay(Int) aufrufen und eine Int Wert übertragen.
- Keine Bedeutung im Drucken: Wenn Sie die Wochentage ausdrucken möchten, erscheinen Sie die Nummer, nicht die Wort wie "MONDAY".
Und hier ist das die Erstellung vom enum, ein besondere Kollektion
WeekDay.swift
import Foundation
// Define an Enumeration.
enum WeekDay {
// Elements
case MONDAY
case TUESDAY
case WEDNESDAY
case THURSDAY
case FRIDAY
case SATURDAY
case SUNDAY
}
Das Beispiel von der Benutzung vom Enum:
WeekDayTest.swift
import Foundation
// Die Aufgabe zurückgeben
func getJob(weekDay: WeekDay) -> String {
if (weekDay == WeekDay.SATURDAY || weekDay == WeekDay.SUNDAY) {
return "Nothing"
}
return "Coding"
}
func test_getJob() {
var weekDay = WeekDay.TUESDAY
print("Day = \(weekDay)")
var job = getJob(weekDay)
print("Job = \(job)")
}
2. Die Elemente vom Enum browsen
Es gibt keine verfügbare Funktion oder Methode, damit Sie die Elementsliste eines Enum nehmen dürfen. Aber Sie können eine Variable für die Enthaltung alles Elementen vom Enum
Das folgende Beispiel definiert ein Enum. In diesem Enum wird die Konstante für die Enthaltung seines allen Elemente definiert
Season.swift
import Foundation
// Die Saison im Jahr.
enum Season {
case Spring
case Summer
case Autumn
case Winter
// Ein static Konstante fasst die Elemente von Enum um
static let allValues = [Spring, Summer, Autumn, Winter]
}
GetAllSeasons.swift
import Foundation
func test_getAllSeasons() {
for season in Season.allValues {
print(season)
}
}
Das Ergebnis vom BEispiel
Spring
Summer
Autumn
Winter
3. Enum in dem Befehl switch
Es ist so gleich wie die primitive Daten (Int,Float,..), dass Enum als ein Parameter im Befehl switch benutzt wird.
Sehen Sie ein Beispiel:
Sehen Sie ein Beispiel:
SwitchDemo.swift
import Foundation
func test_switchEnum() {
var day = WeekDay.THURSDAY;
switch (day) {
case .MONDAY:
print("Working day");
case .SATURDAY, .SUNDAY :
print("Holiday");
default:
print(day);
}
}
Die Kode vom main.swift ändern
main.swift
import Foundation
test_switchEnum()
Das Beispiel durchlaufen
THURSDAY
4. Enum mit dem rohen Werte (raw value)
Sie können ein Enum mit der rohen Wert (raw values) definieren. Und die rohen Werte können die Typ vom String, character, Int, Number,...sein. Ein solche Enum verbreiten ein der Type String, Character, Int,..
Zum Beispiel: Sie können ein Enum als die Kollektion der Monate des Jahres defininieren. Die Kollektion enthaltet die rohen Werten vom 1 bis zum 12
Zum Beispiel: Sie können ein Enum als die Kollektion der Monate des Jahres defininieren. Die Kollektion enthaltet die rohen Werten vom 1 bis zum 12
RawValueEnum.swift
import Foundation
// Die Definition eines Enum ist die Liste der Monaten im Jahr.
// Es erweitert aus Int (extends)
enum Month : Int {
// Die Rohwert (raw value) für die erste Wert
// (wenn ein Element wird die Rohwert nicht angewiesen,
// wird sein Wert nach dem Default festgelegt, dass die vorne Elemente 1 addiert).
case January = 1,
February, March, April, May, June,
July, August, September, October, November, December
// Eine static Konstant fasst alle Elemente von enum Month um.
static let allValues = [January,February, March,
April, May, June, July, August,
September, October, November, December]
}
//
enum Suit:String {
case Spades = "♠"
case Hearts = "♥"
case Diamonds = "♦"
case Clubs = "♣"
// Ein e static Konstant fasst alle Elemente von enum Suit um.
static let allValues = [Spades,Hearts,Diamonds,Clubs]
}
die Elemente vom enum Month und die entsprechenden rohen Wert(raw value) ausdrucken
RawValueEnumTest.swift
import Foundation
func test_MonthEnum() {
// Alle Elemente und die Rohwert (raw value) von Enum ausdrucken
print("All element/raw value of Month enum");
for e in Month.allValues {
let rawValue = e.rawValue
print("Element \(e), raw value: \(rawValue)" );
}
print("---------------------");
// Alle Elemente und die Rohwert (raw value) von Enum ausdrucken
print("All element/raw value of Suit enum");
for e in Suit.allValues {
let rawValue = e.rawValue
print("Element \(e), raw value: \(rawValue)" );
}
}
Das Beispiel durchführen
All element/raw value of Month enum
Element January, raw value: 1
Element February, raw value: 2
Element March, raw value: 3
Element April, raw value: 4
Element May, raw value: 5
Element June, raw value: 6
Element July, raw value: 7
Element August, raw value: 8
Element September, raw value: 9
Element October, raw value: 10
Element November, raw value: 11
Element December, raw value: 12
---------------------
All element/raw value of Suite enum
Element Spades, raw value: ♠
Element Hearts, raw value: ♥
Element Diamonds, raw value: ♦
Element Clubs, raw value: ♣
5. Enum mit der verbunden Werte
Sie können ein Enum mit der Elemente, die die verbundene Werte enthalten, erstellen
Ich gebe eine Situation: Sie erstellen ein Enum,das die Promotionstyp enthaltet
- GIFT: das Geschenk schenken
- DISCOUNT: die Rabattierung
- MONEY: Geld schenken/geben
- SHIPPING: kostenloser Transport
Das Problem liegt, dass eine Promotionsform hat seine Verbindungswert, zum Beispiel der Form von Geschenk (GIFT) : was für das Geschenk, und die Menge des Geschenk. Oder Gelb schenken (MONEY) : wieviel Gelb,...
Deshalb hat jeder Element vom Enum den unterschiedlichen Parameter. Sehen Sie das Beispiel
Deshalb hat jeder Element vom Enum den unterschiedlichen Parameter. Sehen Sie das Beispiel
Promotion.swift
import Foundation
// Die Promotion
enum Promotion {
// Das Geschenk (Was für das Geschenk und die Anzahl)
case GIFT (name: String, quantity: Int)
// Die Discount (die Prozent: 0 - 100)
case DISCOUNT(percent: Int)
// das Geld (der Betrag).
case MONEY(amount : Int)
// die kostenlose Transport
case SHIPPING
}
Enum Promotion hat nur 4 Elemente. Sie können seine Elemente nicht ergänzen oder hinzufügen. Und die Verbindungswerte des Element werden beim Laufen des Programm bestimmt
PromotionTest.swift
import Foundation
// Die Illustration der Beschaffung und der Promotion.
func getRandomPromotion() -> Promotion {
// Eine Random Wert
var random: UInt32 = arc4random()
// Die Teilung durch 4 und die Rest bekommen (0, 1, 2, 3).
random = random % 4
switch random {
case 0:
return Promotion.DISCOUNT(percent: 10)
case 1:
return Promotion.GIFT(name: "Doll", quantity: 1)
case 2:
return Promotion.MONEY(amount: 100)
case 3:
return Promotion.SHIPPING
default:
return Promotion.SHIPPING
}
}
func test_Promotion() {
var myProm = getRandomPromotion()
print("Get Promotion: \(myProm)")
switch myProm {
case .DISCOUNT(let percent):
print("Percent is: \(percent)")
case .GIFT(let name, let quantity ):
print("Gift name: \(name), quantity: \(quantity)")
case .MONEY(let amount) :
print("Amount: \(amount)")
default:
print(myProm)
}
}
main.swift ändern
main.swift
import Foundation
test_Promotion()
Das Beispiel durchführen
Get Promotion: GIFT("Doll", 1)
Gift name: Doll, quantity: 1
6. Die Methode im Enum
Sie können die Methode im Enum definieren. Sehen Sie das Beispiel
Currency.swift
import Foundation
// Die Währung (Currency).
enum Currency {
case USD
case YEN
case VND
func description() -> String {
switch self {
case USD:
return "America's currency"
case YEN:
return "Japan's currency"
case VND :
return "Vietnam's currency"
}
}
}
Anleitungen Swift
- Installieren Sie die virtuelle Mac OS-Maschine in VMWare
- Installieren Sie XCode
- Die Anleitung zum Swift für den Anfänger
- Die Anleitung zu Swift Function
- Die Anleitung zu Swift Closure
- Klasse und Objekt in Swift
- Die Anleitung zu Swift Enum
- Die Anleitung zu Swift Struct
- Programmierung für Team mit XCode und SVN
Show More