首页 > 解决方案 > 我们可以在 Swift 上重用 struct 吗?或者还有其他方法吗?

问题描述

所以我有一个像这样的用户 JSON 结构:

- results: {
    meta: {}
    users: []
  },
- status:

我想获取用户,所以User我实现获取 JSON 的模型是这样的:

struct Response: Decodable {

    let results: Result
    let status: Int
}

struct Result: Decodable {

    let meta: Meta
    let users: [User]
}

struct Meta: Decodable {

    let total_data: Int
    let total_page: Int
}

struct User: Decodable {

    let avatar_url: String
    let created_at: String
    let updated_at: String
    let email: String
    let id: Int
    let name: String
    let username: String
}

它正在工作,但是当我有另一个结构相似的 JSON 时,可以这样说

- results: {
        meta: {}
        rooms: []
      },
    - status:

当我创建Room模型时,上面有另一个模型,struct Response它会导致错误,因为它是重复声明。

是否可以在 Swift 中重用结构?或者有什么方便的方法可以做到这一点?

谢谢

标签: iosjsonswiftdecodable

解决方案


你可以使用泛型。

struct Response<T: Decodable>: Decodable {
    let results: Result<T>
    let status: Int
}

struct Result<T: Decodable>: Decodable {
    let meta: Meta
    let objects: [T]
}

struct Meta: Decodable {    
    let total_data: Int
    let total_page: Int
}

struct User: Decodable {
    let avatar_url: String
    let created_at: String
    let updated_at: String
    let email: String
    let id: Int
    let name: String
    let username: String
}

let userResponse: Response<User>?

推荐阅读