You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何移除数组前三个元素?解决评论追加重复问题

解决方案:替换旧评论而非追加

要解决新评论追加到旧评论后的问题,核心是在添加新数据前清空旧数组,或直接用新数据覆盖旧数组,同时优化表格刷新逻辑:

修改后的代码(基础版)

self.fetchReviews(id: venue.id ?? "no number", locale: "en_US") { (response, error) in
    guard let validResponse = response else { return }
    
    // 清空旧评论数组
    self.resturantReviews.removeAll()
    
    // 添加新评论
    for review in validResponse {
        self.resturantReviews.append(review.text!)
    }
    
    // 所有数据处理完成后统一刷新表格
    tableView.reloadData()
}

更简洁安全的写法

用compactMap替代强制解包,自动过滤text为nil的情况,同时直接覆盖旧数组:

self.fetchReviews(id: venue.id ?? "no number", locale: "en_US") { (response, error) in
    guard let validResponse = response else { return }
    
    // 直接用新评论数组覆盖旧数据
    self.resturantReviews = validResponse.compactMap { $0.text }
    
    tableView.reloadData()
}

关键要点

  • removeAll()或直接赋值新数组,彻底清除旧评论,避免追加
  • 用compactMap替代!强制解包,防止因review.text为nil引发崩溃
  • 将tableView.reloadData()移出循环,仅在数据更新完成后调用一次,提升性能

内容的提问来源于stack exchange,提问作者user18260855

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:45:42