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

SwiftUI表格多选时,如何获取ID外的对象属性或完整对象

解决方案

方法:使用计算属性转换选中结果

直接通过计算属性,基于当前选中的UUID集合,从数据源中筛选出对应的General对象或提取policyId,无需修改原有Table的selection绑定逻辑。

1. 获取选中的完整General对象集合

添加以下计算属性,会自动根据选中的UUID匹配数据源中的对象:

private var selectedPolicies: Set<General> {
    Set(networkController.allPoliciesDetailedGeneral.filter { selectedPolicyIDs.contains($0.id) })
}

2. 获取选中的policyId集合(处理可选值)

如果只需要policyId,可以基于上面的对象集合进一步提取:

private var selectedPolicyIds: Set<Int> {
    Set(selectedPolicies.compactMap { $0.policyId })
}

使用示例

在需要传递选中数据的函数中直接调用这些计算属性即可:

// 传递完整对象集合
func handleSelectedPolicies() {
    processPolicies(selectedPolicies)
}

// 传递policyId集合
func handleSelectedPolicyIds() {
    processPolicyIds(selectedPolicyIds)
}

说明

  • 计算属性会自动响应selectedPolicyIDs和networkController.allPoliciesDetailedGeneral的变化,无需额外添加监听逻辑
  • 使用Set保证数据唯一性,和原selection的集合类型保持一致
  • compactMap用于过滤掉policyId为nil的情况,确保集合中都是有效Int值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:37:44