插入Firestore数据时,图像会重复

时间:2019-06-05 09:27:17

标签: ios swift google-cloud-firestore

我在表格视图中创建了一个小的“通知中心”。但是图像以某种方式在重复自身,这不是应该的方式。

我无法真正弄清楚其原因,所以我要向你们寻求帮助。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let listPath = list[indexPath.row]
    let cell = tableView.dequeueReusableCell(withIdentifier: "ListCell") as! HistoryCell
    cell.setCell(list: listPath) 

    print(cell.note.text!)

     //THIS ONE
    if cell.note.text!.isEmpty == false
    {
        cell.noteImg.isHidden = false
    }


    return cell
}

这是我编写的代码的一部分。所以,让我解释一下这是如何工作的。

每次用户将数据添加到SPECIFIC文本字段时,都应将其添加到Firestore的“注释”中。 我从Firestore中选择所有内容,以将数据插入此UITableView,并且如果“ notes”不为空。我的图像应该可见。

我现在得到的结果是: 即使值为nil,它也会重复添加。

img

因此,您可以在图片上看到。 第一个(1)是正确的。 (12:55的那个) 但是第二个应该不存在,它是随机添加的。

我真的希望你能理解,让它简短而有条理并不是一件容易的事。


编辑:

 func setCell(list: listTxt){
    DogName.text = list.dog
    Person.text = list.person
    Action.text = list.action
    Date.text = list.date
    Time.text = list.time
    timer.text = list.timer
    kilometer.text = list.kilometers
    documentID.text = list.documentID
    latitude = list.latitude
    longitude = list.longitude
    note.text = list.note
    noteImg.image = list.noteImg
}

1 个答案:

答案 0 :(得分:2)

我确定,但是根据我的知识和经验,以下代码会导致意外输出。

cell.note.text!.isEmpty == false

UITableViewreusing UITableViewCell填充数据。这就是为什么您得到意外输出的原因。

只需用我的代码替换cellForRowAt方法。我希望它能起作用。

代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let listPath = list[indexPath.row]
    let cell = tableView.dequeueReusableCell(withIdentifier: "ListCell") as! HistoryCell
    cell.setCell(list: listPath) 

    if listPath.note.isEmpty == false{
        cell.noteImg.isHidden = false
    }else{
        cell.noteImg.isHidden = true
    }
    return cell
}

更新:

dequeueReusableCell(withIdentifier:for:)

  

返回一个可重用的表视图单元对象以进行指定的重用   标识符并将其添加到表中。

参考:dequeueReusableCell