在 swift 中使用 MessageKit 时出现 "SenderType' cannot be constructed because it has no accessible initializers" 错误

I am getting this error of "SenderType' cannot be constructed because it has no accessible initializers" while using the MessageKit in swift

我正在使用最新版本的 MessageKit 进行练习,但在编译期间出现“'SenderType' cannot be constructed because it has no accessible initializers”错误,

为什么会这样,也请推荐解决方法

谢谢

    import Foundation
    import UIKit
    import MessageKit

    struct Member {
        let name: String
        let color: UIColor
    }

    struct Message {
        let member: Member
        let text: String
        let messageId: String
    }

    extension Message: MessageType {
**//ERROR IS SHOWN HERE**
        var sender: SenderType {
            return SenderType(id: member.name, displayName: member.name)

        }

      /*  var sender: Sender {
            return Sender(id: member.name, displayName: member.name)
        }*/

        var sentDate: Date {
            return Date()
        }

        var kind: MessageKind {
            return .text(text)
        }
    }

SenderType 是一个 PROTOCOL。当您 CMD+Control^+ClickSenderType 时,您会看到这一点。那么你会怎么做呢? Xcode 说它没有构造函数,实际上它没有构造函数 (init()),正如您在其描述中看到的那样。

MessageType 也是 PROTOCOL。而你所做的就是实现它的 functions/variables。所以对 SenderType 做同样的事情。实施其 functions/variables:

  1. senderId
  2. 显示名称

最后,你会喜欢这样:

extension Message: MessageType, SenderType {
    var senderId: String {
        return member.name
    }

    var displayName: String {
        return member.name
    }

    var sentDate: Date {
        return Date()
    }

    var kind: MessageKind {
        return .text(text)
    }
}

Well Protocol 只是一个蓝图,不是一个完全成熟的类型(有时称为存在类型)。

但是,谁采用&符合它,实际上就是一个Concrete TypeClass/Struct/Enumcan/should被实例化

参考:https://docs.swift.org/swift-book/LanguageGuide/Protocols.html