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
相关产品推荐
相关产品推荐

