Tan*_*eek 0 networking swift urlsession
我正在尝试进行简单的网络调用,但在使用结果类型时遇到错误。Xcode 告诉我“无法专门化非泛型类型‘结果’”。我正在寻找解决方案,但在互联网和 stackoverflow 中都没有成功找到它。错误是:
Cannot specialize non-generic type 'Result'
Remove '<FriendsModel,NetworkingError>'
Run Code Online (Sandbox Code Playgroud)
我的代码是:FriendsWebServices.swift
import Foundation
enum NetworkingError:Error{
case nodataAvailable
case invalidURL
case canNotProcessData
case encodingError
case statusCodeIsNotOkay
}
class FriendsWebServices{
static let shared = FriendsWebServices()
private let session = URLSession.shared
//Get Method
func getPosts(completion: @escaping (Result<FriendsModel,NetworkingError>)->Void){
let urlStirng = EndPointSouce.getEndPoint(type: .Base) + EndPointSouce.getEndPoint(type: .HowManyFriends(10))
guard let url = URL(string: urlStirng) else {
completion(.failure(.invalidURL))
return
}
// Create the url request
var request = URLRequest(url: url)
request.httpMethod = "GET"
let dataTask = session.dataTask(with: request) { data, response, error in
guard let jsonData = data else{
completion(.failure(.nodataAvailable))
return
}
guard let response = response as? HTTPURLResponse else {
print("Response is nil")
return
}
if response.statusCode == 200{
do{
let decoder = JSONDecoder()
let responseObject = try decoder.decode([Post].self, from: jsonData)
completion(.success(responseObject))
}catch{
completion(.failure(.canNotProcessData))
}
}else{
completion(.failure(.statusCodeIsNotOkay))
}
}
dataTask.resume()
}
}
Run Code Online (Sandbox Code Playgroud)
我的型号:
import Foundation
struct FriendsModel:Decodable{
var results: [Result]
}
struct Result:Decodable {
var name: Name
var location : Location
var email: String
var phone : String
var cell: String
var picture : Picture
}
struct Name:Decodable{
var title: String
var first: String
var last: String
}
struct Location:Decodable {
var street: String
var city : String
var state: String
var postcode: String
var timezone:TimeZone
}
struct TimeZone:Decodable {
var offset: String
var description: String
}
struct Picture:Decodable{
var large : String
var medium: String
var thumbnail: String
}
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?谢谢。
Swe*_*per 14
简单名称Result指的是此处定义的结构:
struct Result:Decodable {
var name: Name
var location : Location
var email: String
var phone : String
var cell: String
var picture : Picture
}
Run Code Online (Sandbox Code Playgroud)
不是内置Result类型,因为同一模块中的类型优先。
要引用内置Result类型,您可以将结构重命名为其他名称,或者使用以下命令对其进行限定Swift.Result:
Swift.Result<FriendsModel,NetworkingError>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3860 次 |
| 最近记录: |