Swift 如何更新messageCollectionView单元格内的数据?

Swift 如何更新messageCollectionView单元格内的数据?,swift,collectionview,messagekit,Swift,Collectionview,Messagekit,我想在单元格中显示加载的图像。我试着这样做: messages.filter { (mType) -> Bool in mType.messageId == "\(message.id)" }.first?.kind = .photo(ImageMediaItem(image: UIImage(systemName: "photo")!.withTintColor

我想在单元格中显示加载的图像。我试着这样做:

messages.filter { (mType) -> Bool in
                        mType.messageId == "\(message.id)"
                    }.first?.kind = .photo(ImageMediaItem(image: UIImage(systemName: "photo")!.withTintColor(UIColor.gray, renderingMode: .automatic)))
其中:

var messages = [MessageType]()
但我看到一条信息说:

Cannot assign to property: 'kind' is a get-only property
因此,我决定将setter/getter添加到此属性:

struct Message: MessageType {
    var sender: SenderType
    var messageId: String = ""
    var sentDate: Date
    var kind: MessageKind{
        get {
            return self.kind
        }
        set (newValue) {
            self.kind = newValue
        }
    }
}
我使用了这样的范围向聊天列表添加数据:

messages.append(Message(sender: message.fromId == selectedContactID ? otherSender! : currentUser!, messageId: "\(message.id ?? -1)", sentDate: Date().addingTimeInterval(-8600000), kind: mKind))
但在上述变化之后,我看到了这样的信息:

Extra argument 'kind' in call

我试图查看文档,但没有发现smth对我的情况有用。也许有人知道如何解决这个问题?

您需要使用
结构获取需要更改的对象的索引

if let index = messages.firstIndex(where:{ $0.messageId == "\(message.id)" }) {
   messages[index].kind = .photo(ImageMediaItem(image: UIImage(systemName: "photo")!.withTintColor(UIColor.gray, renderingMode: .automatic)))
}

对于调用中的
额外参数'kind',
计算属性不应在init中,在您的情况下,您不需要将其设置为
计算属性,因为您实现了默认情况下已经存在的属性

,我无法更新某些单元格,这些单元格将已经在我的collectionview中安装了kind?并且您的代码作用域给了我一个错误
无法将“MessageType”类型的值转换为预期的参数类型“Int”
添加对象的索引,而不是对象本身作为单元格内的属性。顺便说一句,您可以将所有内容委托给vc要访问数组,alsoI仍然无法理解某些内容,我必须更改消息的结构?因为在插入您的答案后,我收到了关于get only属性的消息:(如果需要延迟初始化,请将其更改为
var-kind:MessageKind
var-kind:MessageKind?