首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >符合关联类型的协议

符合关联类型的协议
EN

Stack Overflow用户
提问于 2018-05-29 09:57:27
回答 1查看 81关注 0票数 1

我坚持斯威夫特语法。这个代码示例不会编译,我也找不到原因。上面写着

类型'TextMessageViewModelDefaultBuilder‘不符合协议'ViewModelBuilderProtocol’

代码语言:javascript
复制
import Foundation

protocol MessageModelProtocol { }
protocol MessageViewModelProtocol { }

protocol TextMessageViewModelProtocol:MessageViewModelProtocol {}
protocol TextMessageModelProtocol:MessageModelProtocol {}

protocol ViewModelBuilderProtocol {
    associatedtype ModelT: MessageModelProtocol
    associatedtype ViewModelT: MessageViewModelProtocol
    func canCreateViewModel(fromModel model: Any) -> Bool
    func createViewModel(_ model: ModelT) -> ViewModelT
}

class TextMessageViewModelDefaultBuilder: ViewModelBuilderProtocol {
    typealias ModelT = TextMessageModelProtocol
    typealias ViewModelT = TextMessageViewModelProtocol

    init() {}

    func createViewModel(_ textMessage: ModelT) -> ViewModelT {
        return ViewModelT()
    }

    func canCreateViewModel(fromModel model: Any) -> Bool {
        return model is ModelT
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-29 11:27:01

Hamish在评论中指出,在Swift协议中,协议不符合自己的要求。因此,我不能使用协议类型来实现关联类型的需求。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50581449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档