Swift中Dictionary分组后dict[0]返回nil,dict[1]返回元素的原因?
问题解析
先看你的代码实现:
import UIKit struct test{ var id: Int var nsm: String } let datas = [test(id:1, nsm: "test1"), test(id:2,nsm: "test2"),test(id: 3, nsm: "test3")] let dict = Dictionary(grouping: datas, by: { $0.id}) print(dict[0]) // 输出nil print(dict[1]) // 输出[test(id: 1, nsm: "test1")]
原因很直接:
Dictionary(grouping:by:)方法是用你指定的key(这里是元素的id值)对数组元素分组,生成的字典里只会包含原数组中实际存在的key值。- 你的
datas数组里所有元素的id是1、2、3,所以生成的dict的key只有这三个,不存在key为0的条目,因此dict[0]返回nil。 - 而
dict[1]能获取到元素,是因为原数组里确实有id=1的元素,分组后这个key对应的就是包含该元素的数组。
额外说明:Dictionary(grouping:)返回的是[Key: [Value]]类型,这里Key是Int,Value是你的test结构体。当你访问字典中不存在的key时,Swift会返回nil,这是字典的默认行为。
内容的提问来源于stack exchange,提问作者TheCesco1988
相关产品推荐
相关产品推荐

