我有这个简单的代码:
var dic = [25:"first" , 35 : "second" , 55 : "third"]
let firstKey = Array(dic.keys)[0] // or .first
print (firstKey)
我猜它会返回25
,因为如果是25,那么字典第一个索引处的第一个键。但奇怪的是它返回35。
怎么了?
由于
答案 0 :(得分:0)
尝试
let firstKey = Array(dic.keys).sort()[0]
答案 1 :(得分:0)
答案 2 :(得分:0)
您似乎假设字典是有序的,而不是。请参阅Swift编程语言指南的Collection Types部分。这是什么意思?这意味着无保证值或密钥以您创建它们的顺序存储。您唯一的保证是通过它的键访问值将返回该值。
如果您需要按给定顺序访问您的密钥,则由您来提供该功能。
如果查看Swift Standard Library Reference,它会记录我们可以在字典上使用哪些方法。
您可以使用以下属性和函数来处理带字典的索引。
属性:
startIndex
endIndex
功能
func indexForKey(_ key: Key) -> DictionaryIndex<Key, Value>?
func removeAtIndex(_ index: DictionaryIndex<Key, Value>) -> (Key, Value)
字典也符合indexable protocol。
收集类型
Swift提供三种主要的集合类型,已知 用作存储值集合的数组,集合和字典。 数组是有序的值集合。集合是无序的 独特价值的集合。 字典是无序集合 关键值协会。