繁体   English   中英

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

[英]How I can update data inside messageCollectionView cell swift?

我想在单元格中显示加载的图像。 我试图以这种方式做到这一点:

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

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

你需要获取对象的索引,你需要用改变struct

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

并且对于Extra argument 'kind' in callExtra argument 'kind' in call除了在您的情况下,计算属性不应在 init 中,因为您实现默认情况下已经存在的内容,因此不需要将其设置为computed property

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM