Swift枚举关联值

时间:2017-09-20 09:00:43

标签: swift enums

我的API有路径和后面的int。

例如,/get/news/{id}.

对于路径端点,我有这样的枚举:

enum Endpoints : String {

case news = "news"
}

是否有任何方便的方法可以使用相关值?

类似的东西:

case newsById(id: String) = "get/news/" + id

3 个答案:

答案 0 :(得分:5)

您可以使用:

enum APIEndpoints {
    case news(id: Int)

    var path: String {
        switch self {
        case let .news(id):
            return "/get/news/\(id)"
        }
    }
}

并使用它:APIEndpoints.news(id: 5).path

答案 1 :(得分:3)

您始终可以在枚举中添加一个函数来获取URI:

enum Endpoints : String {
    case news = "news"

    func getUri(id: string) -> String {
        return "get/\(self.rawValue)/\(id)"
    }
}

答案 2 :(得分:1)

你可以试试这个:

enum Endpoints: String {
   case news

   func getNewsByStringId() -> String {
     return "get/news/\(self.rawValue)"
   }
}