Assume i have the following code
var dictionary = [\"cat\": 2,\"dog\":4,\"snake\":8]; // mutable dictionary
var keys = dictionary.keys
var values = dictionary.
No, it is not guaranteed to be in the same order. From documentation:
Swift’s Dictionary type is an unordered collection. The order in which keys, values, and key-value pairs are retrieved when iterating over a dictionary is not specified.
The definition of the keys
and values
property is preceded by the following
comments:
/// A collection containing just the keys of `self`
///
/// Keys appear in the same order as they occur as the `.0` member
/// of key-value pairs in `self`. Each key in the result has a
/// unique value.
var keys: LazyBidirectionalCollection<MapCollectionView<[Key : Value], Key>> { get }
/// A collection containing just the values of `self`
///
/// Values appear in the same order as they occur as the `.1` member
/// of key-value pairs in `self`.
var values: LazyBidirectionalCollection<MapCollectionView<[Key : Value], Value>> { get }
My interpretation of
Keys/Values appear in the same order as they occur as the
.0
/.1
member of key-value pairs inself
.
is that dictionary.keys
and dictionary.values
return the keys and values in
"matching" order.
So the key-value pairs of a dictionary do not have a specified order, but
the first, second, ... element of dictionary.values
is the dictionary value corresponding to the first, second, ... element of dictionary.keys
.