The order is stable enough (in the obvious ways) to iterate over, repeatedly. From the Dictionary documentation (https://developer.apple.com/documentation/swift/dictionary):
"The order of key-value pairs in a dictionary is stable between mutations but is otherwise unpredictable. […] A dictionary’s indices stay valid across additions to the dictionary as long as the dictionary has enough capacity to store the added values without allocating more buffer. When a dictionary outgrows its buffer, existing indices may be invalidated without any notification."
If you don't care which entry you get, each time you ask for one, or if you're just getting them all and the order doesn't matter, then iterating over the index is fine. If you want to randomize the retrievals, it's harder because you want the order to "feel" random, i.e. unpredictable.
The SO post you reference is on a slightly different topic: why the index order is different from the source literal order. That's because the index order represents (directly or indirectly) the order in which entries are stored, and a primary determinant on that is (likely to be) the hashValue of the keys.