我正在制作聊天应用程序,但无论出于何种原因,都有重复的单元格。所以我想循环遍历所有可见单元格,并获取时间和名称等属性,以允许我删除任何重复项。但是我得到了错误:
来自' UserCell'不相关的类型'数组'总是 失败
如何解决此问题,或者是否有更好的方法来循环使用自定义单元格的表格视图?
我想做的事情:
func deleteDuplicateTableCells(){
let cells = self.messagesTableView.visibleCells as! UserCell as! Array<UITableViewCell>
for cell in cells {
// get .name and .timestamp from cell
}
}
以下是UserCell
类的重要部分:
class UserCell : UITableViewCell {
var message : Message? {
didSet{
if let id = message?.chatPartnerId{
let ref = Database.database().reference().child("users").child(id()!)
ref.observe(.value, with: { (snapshot) in
if let dict = snapshot.value as? [String: AnyObject]
{
self.textLabel?.text = dict["username"] as? String
if let profileImageUrl = dict["pic"] as? String {
self.profileImageView.loadImageUsingCacheWithUrlString(urlString: profileImageUrl)
}
}
}, withCancel: nil)
}
detailTextLabel?.text = message?.text
let timeInt = message?.timestamp?.numberValue
if let seconds = timeInt?.doubleValue{
let timeStampDate = NSDate(timeIntervalSince1970: seconds)
let dateformat = DateFormatter()
dateformat.dateFormat = "hh:mm:ss a"
timeLabel.text = dateformat.string(from: timeStampDate as Date)
}
}
}
答案 0 :(得分:0)
尝试获取可见细胞的方式有点偏离,请尝试以下方法:
guard let cells = tableView.visibleCells as? [UserCell] else { return }
然后做任何你想做的事情
if cells.map {}... // or whatever
我必须同意您对问题的评论,但这不是最佳方法,您应该处理您的DATA,然后使用该数据填充单元格。编辑屏幕上显示的单元格是不好的做法(老实说,可能无法做你想做的事情。)