符合协议类型的协议

时间:2018-05-29 09:57:28

标签: swift

我坚持使用Swift语法。这个代码示例将无法编译,我找不到原因。它说

  

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

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
    }
}

1 个答案:

答案 0 :(得分:-1)

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

相关问题