关联类型可以有类型注释吗?

问题描述

我正在遵循一个示例,作者在关联类型上使用类型注释,但是 Xcode 抛出错误“无法在范围内找到类型 *”。没有使用任何 Cocoapods 或第三方框架。我也尝试构建该项目,但无法编译。

这是一个单独的 Swift 文件中的类型:

  import Foundation

protocol EndPointType {
    var baseURL: URL {get}
    var path: String {get}
    var httpMethod: HTTPMethod {get}
    var task: HTTPTask {get}
    var headers: HTTPHeaders? {get}
}

这是来自另一个 Swift 文件的代码,该文件的 associatedType 尝试使用类型注释:

    import Foundation

public typealias NetworkRouterCompletion = (_ data: Data?,_ _response: URLResponse?,_ error: Error?)->()

protocol NetworkRouter: class {
    associatedtype EndPoint: EndPointType
    func request(_ route: EndPoint,completion: @escaping NetworkRouterCompletion)
    func cancel()
}

为什么第二个 Swift 文件不能看到数据类型以进行编译?

解决方法

我将 Swift 文件移到一个子组中,Xcode 以为我删除了该文件,但它在工作区中。我将 Swift 文件移回子组,问题就消失了。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...