gpt4 book ai didi

swift - Switch 语句必须详尽 - Xcode 错误?

转载 作者:搜寻专家 更新时间:2023-11-01 06:03:02 25 4
gpt4 key购买 nike

我真的很困惑 Xcode 抛给我的这个错误。它说 Switch 语句必须详尽无遗。不过,我 100% 肯定我正在处理所有案件。

这是我的代码:

enum Search: Endpoint {
case sets(query: String?, creator: String?, imagesOnly: Bool?, autocomplete: Bool?, modifiedSince: TimeInterval?, page: Int?, perPage: Int?)
case classes(query: String, page: Int?, perPage: Int?)
case universal(query: String, page: Int?, perPage: Int?)

public var baseURL: String { return QuizletEndpoint.baseURL }
public var version: Float { return QuizletEndpoint.version }

public var path: String {
switch self { // Switch must be exhaustive ERROR.
case .sets:
return "search/sets"
case .classes:
return "search/classes"
case .universal:
return "search/universal"
}
}
}

更新#1以下是有关我的协议(protocol) Endpoint 的详细信息:

 /// Represents an Endpoint for networking.
public protocol Endpoint: URLConvertible, URLRequestConvertible {
/// The url without any parameters or paths.
var baseURL: String { get }
/// The version of the API.
var version: Float { get }
/// The path to the resource.
var path: String { get }
/// Any parameters to be encoded.
var params: Parameters { get }
}

public extension Endpoint {

public func asURL() throws -> URL {
let finalURL = try baseURL.asURL().appendingPathComponent("\(version)").appendingPathComponent(path)
return finalURL
}

func asURLRequest() throws -> URLRequest {
let finalURL = try asURL()
let request = URLRequest(url: finalURL)

return try URLEncoding.default.encode(request, with: params)
}
}

更新#2好的,现在我几乎可以肯定这是一个 Xcode 错误。将 default 子句添加到我的枚举中会生成一个编译器警告,指出 default 子句永远不会被执行,因此编译器有点同意 default 子句是冗余:

public var path: String {
switch self {
case .sets:
return "search/sets"
case .classes:
return "search/classes"
case .universal:
return "search/universal"
default: return "" // WARNING: Default will never be executed.
}
}

我是疯了还是这是一个 Xcode 错误?我尝试多次清理构建文件夹、定期清理、重建,但似乎无法消除此错误。我开始相信这是 Xcode 中的一个错误,因为我正在运行测试版,但我只是想仔细检查并确保这不是我这边的错误。

最佳答案

有时 Swift 无法检测到您已经掌握了所有可能的情况。

你最好的选择是只添加一个 default: case 后跟 break

但是请注意,如果您从 enum 中删除 : Endpoint 类型,您的代码在 Xcode 8.3.3 中工作正常。那是什么类型的?

关于swift - Switch 语句必须详尽 - Xcode 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44713594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com