具有getter和setter的属性的符合协议的枚举

时间:2019-06-06 00:45:48

标签: swift

枚举是否有限制,我无法设置由枚举实现的协议的属性。

我想使Headers字段可配置,允许设置headers。 我知道枚举只有计算属性,这甚至可能。

protocol APIConfiguration : URLRequestConvertible {
    var method : HTTPMethod { get }
    var path : String { get }
    var parameters : Parameters? { get }
    var baseURL : String { get }
    var headers : [String : String]? { get set }
}

enum LoginEndpoint: APIConfiguration
{

    case login
    case user


    // MARK: - Base URL
    var baseURL : String
    {
        switch self
        {
        case .login, .user:
            return K.Graph.baseURI
        }
    }


    // MARK: - HTTPMethod
    var method : HTTPMethod
    {
        switch self
        {
        case .login:
            return .get
        case .user:
            return .get
        }
    }


    // MARK: - Path
    var path : String
    {
        switch self
        {
        case .login:
            return "/v1.0/me/"
        case .user:
            return "/user.read"
        }
    }


    // MARK: - Parameters
    var parameters : Parameters?
    {
        switch self
        {
        case .login:
            return nil
        case .user:
            return nil
        }
    }

    var headers : [String : String]?
    {
        get {
            if let sessionToken = SessionStore.shared.sessionToken
            {
                return [HTTPHeaderField.authentication.rawValue:sessionToken]
            }
            return nil
        }
        set {}
    }

}

0 个答案:

没有答案