Is there a way to iterate through a Dictionary
in a ForEach
loop? Xcode says
Generic struct 'ForEach' requires that '[String : Int]' conform to 'RandomAccessCollection'
so is there a way to make Swift Dictionaries conform to RandomAccessCollection
, or is that not possible because Dictionaries are unordered?
One thing I've tried is iterating the dictionary's keys:
let dict: [String: Int] = ["test1": 1, "test2": 2, "test3": 3]
...
ForEach(dict.keys) {...}
But keys
is not an array of String
s, it's type is Dictionary<String, Int>.Keys
(not sure when that was changed). I know I could write a helper function that takes in a dictionary and returns an array of the keys, and then I could iterate that array, but is there not a built-in way to do it, or a way that's more elegant? Could I extend Dictionary
and make it conform to RandomAccessCollection
or something?
Collections
package that includesOrderedDictionary
which works seamlessly withForEach
- see this answer. – pawello2222