ios - 我们可以在 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 中重用结构?或者有什么方便的方法可以做到这一点?
谢谢
解决方案
你可以使用泛型。
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>?
推荐阅读
- python - 自定义最小函数没有返回我的负输入并且只返回零?我该如何修复我的代码?
- c++ - Lambdas 捕获和转发函子
- python - BigQuery 存储 API 错误:bqstorage_client
- c# - 如何在 .NET Core 2 的 Startup.cs 中“默认向 DI 注册 IConfiguration 对象”
- google-cloud-platform - BigQuery API 错误:“项目 ___ 尚未启用 BigQuery。”
- firebase - Firestore 中的收藏数量是否有限制?
- google-sheets - Google 表格函数 Address() 会导致添加不需要的字符 ''!在 ArrayFormula 中使用时
- python - 无法使用 git 身份验证进行私人 repo pip install
- javascript - 在同一页面上多次点击
- javascript - 在 C# 客户端的浏览器控件中运行时,Alert、Confirm 和 Prompt 不起作用的原因