首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.onDelete在排序的ForEach - SwiftUI中不起作用

在排序的ForEach - SwiftUI中,.onDelete() 是一个用于删除元素的修饰符。然而,在排序的ForEach中使用 .onDelete() 时可能会遇到问题,因为排序会改变元素的顺序,从而导致删除操作无法正确地与元素对应。

解决这个问题的方法是,在ForEach之前先对数据进行排序,然后在ForEach中使用带有索引的enumerated()方法来遍历数据。这样可以确保删除操作与正确的元素对应。

下面是一个示例代码:

代码语言:txt
复制
struct ContentView: View {
    @State private var items = ["Item 1", "Item 2", "Item 3"]

    var body: some View {
        List {
            ForEach(Array(items.enumerated()), id: \.element) { index, item in
                Text(item)
            }
            .onDelete(perform: deleteItem)
        }
    }

    func deleteItem(at offsets: IndexSet) {
        items.remove(atOffsets: offsets)
    }
}

在这个示例中,我们首先对 items 数组进行排序,然后使用 enumerated() 方法来遍历数组,并将索引和元素传递给 ForEach。最后,我们在 .onDelete() 修饰符中调用 deleteItem() 方法来删除选定的元素。

这样,无论排序如何改变元素的顺序,删除操作都会与正确的元素对应。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云产品:云服务器(https://cloud.tencent.com/product/cvm)
  • 腾讯云产品:云数据库 MySQL 版(https://cloud.tencent.com/product/cdb_mysql)
  • 腾讯云产品:云原生容器服务(https://cloud.tencent.com/product/tke)
  • 腾讯云产品:云存储(https://cloud.tencent.com/product/cos)
  • 腾讯云产品:人工智能(https://cloud.tencent.com/product/ai)
  • 腾讯云产品:物联网(https://cloud.tencent.com/product/iotexplorer)
  • 腾讯云产品:移动开发(https://cloud.tencent.com/product/mobdev)
  • 腾讯云产品:区块链(https://cloud.tencent.com/product/baas)
  • 腾讯云产品:元宇宙(https://cloud.tencent.com/product/metaverse)
  • 腾讯云产品:云安全(https://cloud.tencent.com/product/ss)
  • 腾讯云产品:音视频处理(https://cloud.tencent.com/product/vod)
  • 腾讯云产品:网络通信(https://cloud.tencent.com/product/im)
  • 腾讯云产品:服务器运维(https://cloud.tencent.com/product/cwp)
  • 腾讯云产品:软件测试(https://cloud.tencent.com/product/tst)
  • 腾讯云产品:前端开发(https://cloud.tencent.com/product/fed)
  • 腾讯云产品:后端开发(https://cloud.tencent.com/product/bcd)
  • 腾讯云产品:数据库(https://cloud.tencent.com/product/cdb)
  • 腾讯云产品:存储(https://cloud.tencent.com/product/cos)
  • 腾讯云产品:网络安全(https://cloud.tencent.com/product/ss)
  • 腾讯云产品:音视频(https://cloud.tencent.com/product/vod)
  • 腾讯云产品:多媒体处理(https://cloud.tencent.com/product/vod)
  • 腾讯云产品:人工智能(https://cloud.tencent.com/product/ai)
  • 腾讯云产品:物联网(https://cloud.tencent.com/product/iotexplorer)
  • 腾讯云产品:移动开发(https://cloud.tencent.com/product/mobdev)
  • 腾讯云产品:区块链(https://cloud.tencent.com/product/baas)
  • 腾讯云产品:元宇宙(https://cloud.tencent.com/product/metaverse)

请注意,以上链接仅供参考,具体产品和服务详情请访问腾讯云官方网站获取最新信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SwiftUI 实现视图居中若干种方法

欢迎大家 Discord 频道[2] 中进行更多地交流将某个视图父视图中居中显示是一个常见需求,即使对于 SwiftUI 初学者来说这也并非难事。... SwiftUI ,有很多手段可以达成此目的。本文将介绍其中一些方法,并对每种方法背后实现原理、适用场景以及注意事项做以说明。...当然,你也可以利用 Spacer 这个特性,控制 Text HStack 可使用宽度。...().fill(.clear)使用 SwiftUI 进行开发过程,Color、Rectangle 等经常被用来实现对容器等分操作。...我为本文这种通过多种方法来解决一个问题方式添加了【小题大作】标签,目前使用该便签文章还有: Core Data 查询和使用 count 若干方法[6]、 SwiftUI 视图中打开 URL

6.6K40

优化 SwiftUI List 显示大数据集响应效率

标识( Identity )是 SwiftUI 程序多次更新识别相同或不同元素手段,是 SwiftUI 理解你 app 关键。... SwiftUI 为视图设置显式标识目前有两种方式: ForEach 构造方法中指定 由于 ForEach 视图数量是动态且是在运行时生成,因此需要在 ForEach 构造方法中指定可用来标识子视图...我们的当前例子,通过将 Item 声明为符合 Identifiable 协议,从而实现了 ForEach 中进行了默认指定。...使用了 id 修饰符相当于将这些视图从 ForEach 拆分出来,因此丧失了优化条件。 总之,当前在数据量较大情况下,应避免 List ForEach 子视图使用 id 修饰符。...生产中处理方式 本文为了演示 id 修饰符 ForEach 异常状况以及问题排查思路,创建了一个在生产环境几乎不可能使用范例。

9.1K20

SwiftUI 创建自适应程序化导航方案

因此 SwiftUI ,掌握两种导航容器状态表述差异是实现自适应导航方案关键。...推送和弹出数据过程对应了导航容器添加和移除视图操作。弹出全部数据相当于返回根视图,推送多个数据相当于一次性添加多个视图并直接跳转到最后数据所代表视图。...需要特别注意是, NavigationStack ,根视图是直接通过代码声明,并不存在于“栈”。...例如: A 修改状态 b,B 响应 b 状态; B 修改状态 c,C 视图响应状态 c。...不要忘记 NavigationStack 根视图不在它“栈”数据本例,转换至 NavigationStack 时,需要将 Detail 列声明视图添加到“栈”底端。反过来则将其移除。

4.2K30

架构之路 (五) —— VIPER架构模式(一)

开始 首先看下主要内容: 本教程,您将了解如何在SwiftUI和Combine中使用VIPER体系结构模式,同时构建一个允许用户创建公路旅行iOS应用程序,来自翻译。...Data Sources组,有用于保存或加载数据辅助函数。 如果您喜欢WaypointModule组查看前面的内容。它有一个Waypoint编辑屏幕VIPER实现。...路由器Router处理屏幕之间导航。这与SwiftUI不同,SwiftUI,视图显示任何新视图。...最后,TripListViewForEach结束括号后面添加以下内容: .onDelete(perform: presenter.deleteTrip) 将. ondelete添加到SwiftUI...当您将其放置NavigationView时,该链接将成为一个按钮,将destination推送到导航堆栈上。 content块可以是任何一个SwiftUI视图。

17.4K10

SwiftUI 与 Core Data —— 安全地响应数据

SwiftUI 与 Core Data —— 问题[1]SwiftUI 与 Core Data —— 数据定义[2]SwiftUI 与 Core Data —— 数据获取[3]可以 此处[4] 获取演示项目...当开发者模型编辑器为属性设置了默认值( 取消可选 ), Xcode 自动生成托管对象类定义代码仍会将不少类型声明为可选值类型。通过手动修改类型( 将 String?...回到 Xcode 创建 Core Data 模版代码,我们做如下尝试,进入 NavigationLink 后一秒钟删除该数据:ForEach(items) { item in NavigationLink..., formatter: itemFormatter)")因此 ContentView ForEach ,item 并不会被视为一个可以引发视图更新 Source of truth ( 通过....now, formatter: itemFormatter)")如果使用我们 SwiftUI 与 Core Data —— 数据定义[7] 一文讨论 ConvertibleValueObservableObject

3.2K20

排序算法JDK应用(二)快速排序

作者|杨旭 来源|https://blog.csdn.net/Alex_NINE 改进后快速排序 分析上述代码时,可以发现程序会在特殊情况调用sort()方法即改进后得快速排序,接下来就来分析sort...called pair insertion 快速排序上下文中(即满足进入sort()方法数组)他比传统 * sort, which is faster (...Therefore in float and 因此单双精度排序算法我们必须使用更加精确赋值即a[less]=a[great] * double...e2和e4) 否则使用只有一个枢轴值(e3)进行排序,但是这里还是把待排序数组分成了三个部分分别是大于,等于和小于枢轴区域 结语 写了好久终于把这篇博客写好了,过程查了好多资料看了好多博客,不过最后还是把这个坑填上了...多学习 多阅读 多思考 PS 排序算法写得差不了,接下来准备把数据结构内容用Java语言全部写一遍。争取9月份之前完成这个目标。

1K30

SwiftUI 与 Core Data —— 数据获取

遗憾时,NSFetchedResultsController 为 UITableView 准备基于 NSFetchRequestResultType 优化操作 SwiftUI 不起作用。... SwiftUI ForEach 会根据数据标识( Identifier )自动处理视图添加、删除等操作,因此,当在 SwiftUI 中使用 NSFetchedResultsController...不可在 update 方法同步地改变引发视图更新数据与 SwiftUI 视图中更新 Source of truth 逻辑一致,一个视图更新周期中,不能对 Source of truth 再度更新...这样可以减少 ForEach 数据集变化频次,改善 SwiftUI 视图效率。...Core Data 本身并不具备直接从 SQLite 获取分组记录能力,目前实现方式是以 sectionIdentifier 为首要排序条件获取所有的数据。

4.6K30

干货 | XGBoost携程搜索排序应用

一、前言 互联网高速发展今天,越来越复杂特征被应用到搜索,对于检索模型排序,基本业务规则排序或者人工调参方式已经不能满足需求了,此时由于大数据加持,机器学习、深度学习成为了一项可以选择方式...说起机器学习和深度学习,是个很大的话题,今天我们只来一起聊聊传统机器学习XGBoost大搜排序实践。 二、XGBoost探索与实践 聊起搜索排序,那肯定离不开L2R。...3.1 前期数据准备 首先,我们需要进行需求分析,就是什么场景下排序。...假设我们需要针对搜索召回POI场景进行排序,那么需要确定几件事情: 数据来源:搜索数据就是各种POI,然后需要确定我们有哪些数据可以用来排序,比如最近半年搜索POI曝光点击数据等; 特征梳理:需要梳理影响...四、模型工程实践 4.1 评估指标制定 搜索业务,考虑有以下两种情况: 看重用户搜索成功率,即有没有点击; 看重页面第一屏曝光点击率; 文章开头提到L2R三种分类,我们XGBoost

1.7K11

自定义排序算法JavaScript应用

前言处理数据时,我们常常需要对数组进行排序以满足特定展示或分析需求。虽然JavaScript提供了内置sort()方法来简化这一过程,但在面对复杂排序逻辑时,自定义排序函数则显得尤为重要。...我们目标是根据这些字符串特定部分,按照一定规则(例如先按点前部分,再按点后数字部分排序)来对数组进行排序。...日期格式字符串排序:针对特定日期格式,优先比较年份、月份、日期等部分。多关键字排序:设计更复杂比较逻辑,支持基于多个关键字排序规则。...结论通过自定义排序函数,我们能够精确控制数组元素排序逻辑,从而满足各种复杂应用场景。理解并掌握这类算法不仅能够提升我们编程能力,还能在实际开发解决更多实际问题。...希望本文讲解和示例能够激发你对自定义排序函数兴趣,并在你项目中发挥重要作用。

8410

用 Table SwiftUI 下创建表格

欢迎大家 Discord 频道[2] 中进行更多地交流 Table 是 SwiftUI 3.0 为 macOS 平台提供表格控件,开发者通过它可以快捷地创建可交互多列表格。...SwiftUI 4.0 第一个测试版本( Xcode 14.0 beta (14A5228q) ),Table iPad OS 上表现不佳,存在不少 Bug 。...,更习惯于将数据元素以行( Row )形式进行展示( 一行显示数据不同属性内容 ) Table 数据是懒加载,行视图( TableColumn ) onAppear 和 onDisappear...,SwiftUI 会扩展更多样式到 iPadOS 平台 行选择 Table 启用行选择与 List 方式十分类似: struct TableDemo: View { @State var...也许苹果是吸取了 Table DSL 教训,WWDC 2022 推出 SwiftUI Charts( 也是基于 result builder ) Xcode 下性能表现明显地好于 Table

3.9K30

多业务建模美团搜索排序实践

本文分享了美团搜索多业务排序建模优化工作,我们主要聚焦在到店商家多业务场景,后续内容会分为以下四个部分:第一部分是对美团搜索排序分层架构进行简单介绍;第二部分会介绍多路融合层上多业务融合建模;第三部分会介绍精排模型多业务排序建模...这种基于配额对多路召回结果进行合并做法搜索、推荐场景十分常用,比如淘宝首页搜索、美团推荐等。 为了多路召回灵活接入,适配美团搜索业务发展,我们不断迭代搜索配额模型。...独立子网络拆分 考虑到酒店和旅游美团大搜排序策略流量里面占比较少,而针对小流量相关优化目前统一 Embedding&MLP 模型结构里面很难体现,我们尝试了如图 6 所示的人工自定义多塔模型...精排层多路融合层基础上进一步对多业务搜索结果进行精细化排序建模打分。...Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction [6] Transformer 美团搜索排序实践

90130
领券