无法转换类型为

时间:2019-04-24 08:41:18

标签: ios swift

我目前正在努力解决这个问题。 我有一个动态框架,该框架实现了网络API,可以使用GitHub。

动态框架使用以下方法实现名为GitHub的类:

func repos() -> Promise<[Repository]>

promise实现是我自己的实现,与应用程序目标和动态框架目标共享。

在应用目标中,我定义了协议Client

protocol Client {
    func repositories() -> Promise<[RepositoryWrapper]>
}

然后,我让GitHub从该协议扩展以将[Repository]转换为[RepositoryWrapper]

extension GitHub: Client {
    func repos() -> Promise<[RepositoryWrapper]> {
        return repositories().map({ repos in
            repos.map { transform(repository: $0) }
        })
    }

    private func transform(repository: Repository) -> RepositoryWrapper {
        return RepositoryWrapper(id: repository.id, nameWithOwner: repository.nameWithOwner)
    }

}

但是我当前收到错误消息:

Cannot convert return expression of type 'Promise<[RepositoryWrapper]>' to return type 'Promise<[RepositoryWrapper]>'

我不太确定如何解决此问题,因为错误消息指出类型相同。如果需要在Promise上实施map,我很乐意扩展这个问题。

1 个答案:

答案 0 :(得分:0)

问题似乎是我通过将Promise实现共享给两个目标来使用。一旦我仅将其添加到框架目标并公开在应用程序中使用它,上述实现便开始起作用。