- singleton, 프로젝트 전역에서 사용 가능

GlobalSettings.shared.logLevel.contains(.all) 

- log level 나누기 가능

logLevel = .graphPanel

if GlobalSettings.shared.logLevel.contains(.graph2) { print("blah, blah") }

- 편리한 현재 위치 찍기

"".pwd(self)



import UIKit


//Where am I, exactly 

extension String {

    func pwd(_ x: Any)  {

        print("pwd_", String(describing: x.self))

    }

}


struct _logLevel: OptionSet {

    let rawValue: Int


    static let critical    = _logLevel(rawValue: 1 << 0)

    static let major  = _logLevel(rawValue: 1 << 1)

    static let minor   = _logLevel(rawValue: 1 << 2)

    static let just   = _logLevel(rawValue: 1 << 3)

    static let graph = _logLevel(rawValue: 1 << 4)

    static let graph2 = _logLevel(rawValue: 1 << 5)

    static let graphPanel = _logLevel(rawValue: 1 << 6)

    static let all: _logLevel = [.critical, .major, .minor, .just, .graph, .graph2, .graphPanel]

}


class GlobalSettings {

    var logLevel : _logLevel


    private init() {

//        logLevel = .all

//        logLevel = .critical

           logLevel = .graphPanel

//        logLevel = .just

    }


    static let shared = GlobalSettings()

}


+ Recent posts