我目前正在努力解决这个问题。 我有一个动态框架,该框架实现了网络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,我很乐意扩展这个问题。
答案 0 :(得分:0)
问题似乎是我通过将Promise实现共享给两个目标来使用。一旦我仅将其添加到框架目标并公开在应用程序中使用它,上述实现便开始起作用。