<分区>
我正在尝试编写我的第一个正式的 Xcode 项目,但我对 Swift 5 没有太多经验。因此我什至不确定我的想法是否足够有意义。
我手头的项目涉及大量 JSON 文件的获取和解码。响应有两种或三种模式。所以我想我会写一个 func
并将响应模式传递给它。
我使用 decode<T>(_ type: T.Type, from data: Data): JSONDecoder
解码我的数据。此函数的第一个参数显然具有类型 T.Type
.但它实际上应该是 Codable.Protocol
类型.
有什么办法可以用 Codable
得到它吗? ?
这是我的功能:
func requestPageContent(forCodable codable: Codable, completion: @escaping (Result<PageContent, Error>) -> Void) {
DispatchQueue.global(qos: .default).async {
if let jsonData = try? Data(contentsOf: self) {
if let requestResults = try? JSONDecoder().decode(type(of: codable).self, from: jsonData) {
DispatchQueue.main.async {
completion(.success(requestResults))
}
} else {
print("error: json decoder")
}
} else {
print("error: fetch data")
}
}
}
谢谢。