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

Swift中如何将BrowseItem数组转换为[BrowseSection: [BrowseItem]]字典?

Swift: 将BrowseItem数组按Section分组为字典

因为你的BrowseSection已经遵循了Hashable协议,所以可以直接利用Swift标准库的分组能力实现需求,以下是两种常用方案:

方法一:使用Dictionary(grouping:by:)初始化器(推荐)

这是Swift 4+提供的简洁API,直接按指定键对数组元素分组:

// 假设你已有输入数组
let browseItems: [BrowseItem] = [...]

// 按section属性分组生成目标字典
let myDict: [BrowseSection: [BrowseItem]] = Dictionary(grouping: browseItems, by: { $0.section })

方法二:使用reduce(into:)手动构建字典

如果需要在分组过程中添加额外逻辑(比如过滤元素、修改元素等),可以用reduce手动构建:

let browseItems: [BrowseItem] = [...]

let myDict = browseItems.reduce(into: [BrowseSection: [BrowseItem]]()) { dict, item in
    // 利用字典的default值避免空数组判断
    dict[item.section, default: []].append(item)
}

注意事项

默认情况下,BrowseSection的自动合成Hashable实现会比较所有存储属性(包括可选的id),只有当两个BrowseSection的所有属性值都相等时,才会被视为同一个字典键。如果需要自定义分组规则,可以手动实现hash(into:)和==方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:09:28