无法专门化非泛型类型 'Result'
Cannot specialize non-generic type 'Result'
我正在尝试进行简单的网络调用,但在使用结果类型时出现错误。 Xcode 告诉我“无法专门化非泛型类型 'Result'”。我正在寻找解决方案,但在 Internet 或 Whosebug 中都没有成功找到它。
错误是:
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>
我正在尝试进行简单的网络调用,但在使用结果类型时出现错误。 Xcode 告诉我“无法专门化非泛型类型 'Result'”。我正在寻找解决方案,但在 Internet 或 Whosebug 中都没有成功找到它。 错误是:
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>