我在playground中编写这个例子来复制问题
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])
如果我打印"dict[0]"我得到"零"。但是如果我打印"dict[1]"我得到第一个元素。为什么?
你得到了正确的和预期的答案。
dict[0]
不是"第一元素";字典的。字典没有"第一个元素"。它没有秩序。您正在通过键进行字典查找。dict[0]
为原阵列datas
中id
为0的所有元素的列表。没有这样的元素,所以字典中没有这样的项。
dict[1]
是datas
中id
为1的所有元素的列表。只有一个这样的元素,那就是你所看到的值。