Open1

SwiftUIでOrderedDictionaryを使う

Harumaru 🤖Harumaru 🤖

GitHubのOrderedDictionaryのドキュメントを見れば大体わかる。

  • 辞書型リテラルからでも、タプルのArrayでも初期化できる。
@State private var orderedDictionary: OrderedDictionary<Int, Int> = .init(
    uniqueKeysWithValues: (1...7).map { ($0, 0) }
)
  • ListForEachなどはデータがRandomAccessCollectionに準拠してることを求める。OrderedDictionary自体は準拠してないけれど、そのプロパティであるelementsは準拠しているのでSwiftUIにはそれを渡す。(APIの曖昧さ回避の為にあえてこうなっている。詳しくはドキュメントを参照)
List(orderedDictionary.elements) { (key, value) in
    ...
}