객체를 가진 에러

작성일

객체를 가진 에러

import UIKit

//음식 데이터 모델
struct MyFood { var name: String }
// Error도 이넘이기 때문에 케이스 안에 데이터를 넣을 수 있다.
enum MyHomeError: Error, CustomStringConvertible {
    case iHateCleanMyRoom
    case dinnerFail(with: MyFood? = nil)
    case unknown
    var description: String {
        switch self {
        case .dinnerFail: return "dinnerFaile"
        case .iHateCleanMyRoom: return "iHateCleanMyRoom!"
        case .unknown: return "unknown"
        }
    }
    // 에러타입을 생성하는 스태틱 메소드
    static func initialize(string: String, with data: MyFood) -> MyHomeError {
        switch string {
        case "dinnerFail": return MyHomeError.dinnerFail(with: data)
        case "iHateCleanMyRoom": return MyHomeError.iHateCleanMyRoom
        default: return MyHomeError.unknown
        }
    }
}
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let myPasta = MyFood(name: "까르보나라")
        let myError = MyHomeError.initialize(string: "dinnerFail", with: myPasta)
        switch myError {
        case .dinnerFail(let food):
            print("음식에 실패 하였다.ㅠㅠ / food.name: \(String(describing: food?.name))")
        case .iHateCleanMyRoom:
            print("청소하기 싫어!!!")
        default: break
        }
    }
}