Problem is in difference between IMessage
and Message
types. IConversation
protocol expect that you are able assign to property messages
variable with any type of [IMessage]
, not only case [Message]
. Simple example with one more class:
class OtherMessage: IMessage { }
By protocol declaration you should be able to assign variable with type [OtherMessage]
to messages
, and class Conversation
don't allow this. Fix it:
class Conversation: IConversation {
var messages: [IMessage] = []
}
Update: if you need to work with Message
type, you can use, for example, this solution:
class Conversation: IConversation {
var messages: [IMessage] {get{return _messages}set{_messages = newValue as! [Message]}}
var _messages: [Message] = []
}
and work with _messages
inside class.