如何更新消息 CollectionView 单元格 swift 中的数据?
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:{ [=10=].messageId == "\(message.id)" }) {
messages[index].kind = .photo(ImageMediaItem(image: UIImage(systemName: "photo")!.withTintColor(UIColor.gray, renderingMode: .automatic)))
}
并且对于 Extra argument 'kind' in call
一个计算的 属性 不应该在 init 中,除了在你的情况下你不需要让它 computed property
因为你已经实现了默认存在
我想在单元格中显示加载的图像。我试着这样做:
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:{ [=10=].messageId == "\(message.id)" }) {
messages[index].kind = .photo(ImageMediaItem(image: UIImage(systemName: "photo")!.withTintColor(UIColor.gray, renderingMode: .automatic)))
}
并且对于 Extra argument 'kind' in call
一个计算的 属性 不应该在 init 中,除了在你的情况下你不需要让它 computed property
因为你已经实现了默认存在