不錯的參考: Enum進階
使用enum創(chuàng)建枚舉,像類和其他所有類型那樣,枚舉可以有方法,供訪問。
// ViewController.swift
// Swift枚舉和結(jié)構(gòu)體
//
// Created by Hunter on 20/01/2017.
// Copyright ? 2017 Hunter. All rights reserved.
//
import UIKit
private enum Suit {
case spades, hearts, diamonds, clubs
func simpleDescription() -> String {
switch self {
case .spades:
return "spades,簡單描述--simpleDescription"
case .hearts:
return "hearts--simpleDescription"
case .diamonds:
return "diamonds--simpleDescription"
case .clubs:
return "clubs--simpleDescription"
}
}
func color() -> UIColor {
switch self {
case .spades, .clubs:
return UIColor.black
case .diamonds, .hearts:
return UIColor.red
}
}
}
private let hearts = Suit.hearts
private let heartsDescription = hearts.simpleDescription()
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print(hearts,heartsDescription)
view.backgroundColor = Suit.clubs.color()
/*
輸出:hearts hearts--simpleDescription
視圖的背景顏色為黑色
*/
}
}
再看一個枚舉的簡單使用
//
// ViewController.swift
// Swift枚舉和結(jié)構(gòu)體
//
// Created by Hunter on 20/01/2017.
// Copyright ? 2017 Hunter. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
enum serverResponse {
case result(String?, String?)
case failure(String)
func raw() -> AnyObject {
switch self {
case .result:
return ("1", "2") as AnyObject
case .failure:
return ("3" as AnyObject)
}
}
}
let succes = serverResponse.result("日出時間: 8:00 AM", "日落時間: 19: 00 PM")
let failure = serverResponse.failure("失敗")
override func viewDidLoad() {
super.viewDidLoad()
serverResponseTest()
print(serverResponse.result(nil,nil).raw())
/*
輸出:
日出時間: 8:00 AM 日落時間: 19: 00 PM
("1", "2")
*/
}
func serverResponseTest() {
switch succes {
case let .result(sunrise, sunset):
if let rise: String = sunrise, let set: String = sunset{
print(rise, set)
}
case let .failure(message):
print(message)
}
}
}
結(jié)構(gòu)體同類很相似,它們最大的區(qū)別就是一個結(jié)構(gòu)體傳值,類傳引用.
// ViewController.swift
// Swift枚舉和結(jié)構(gòu)體
//
// Created by Hunter on 20/01/2017.
// Copyright ? 2017 Hunter. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
struct Person {
var wife: String?
var name: String
var age: Int
func who() -> String {
return ("name:\(name),age:\(age)")
}
}
let xiaoMing = Person.init(wife: nil, name: "小明", age: 28)
override func viewDidLoad() {
super.viewDidLoad()
print(xiaoMing,xiaoMing.who())
}
}