不能专用于非泛型类型'Result'



我试图进行一个简单的网络调用,但在使用Result Type时出错。Xcode告诉我;无法专门化非泛型类型"Result";。我正在寻找解决方案,但在互联网上和stackoverflow上都没有成功找到。错误为:

Cannot specialize non-generic type 'Result'
Remove '<FriendsModel,NetworkingError>'

我的代码是: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()
}
}

我的型号:

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
}

为什么我会出现这个错误?非常感谢。

简单名称Result指的是此处定义的结构:

struct Result:Decodable {
var name: Name
var location : Location
var email: String
var phone : String
var cell: String
var picture : Picture
}

而不是内置的Result类型,因为同一模块中的类型具有优先级。

要引用内置的Result类型,可以将结构重命名为其他类型,也可以使用Swift.Result:对其进行限定

Swift.Result<FriendsModel,NetworkingError>

最新更新