1. ホーム
  2. arrays

[解決済み] Swiftで空の配列の辞書を初期化する

2023-05-11 16:03:08

質問

私はSwiftで空の配列を初期化することについて私の頭を包むしようとしています。

文字列の配列のために、それは非常に単純明快です。

var myStringArray: String[] = []
myStringArray += "a"
myStringArray += "b"

-> ["a", "b"]

そして整数の場合は

var myIntArray: Int[] = []
myIntArray += 1
myIntArray += 2

-> [1, 2]

は、NSImage オブジェクトのような他のタイプのオブジェクトでも動作します。

let path = "/Library/Application Support/Apple/iChat Icons/Flags/"
let image1 = NSImage(byReferencingFile: path + "Brazil.png")
let image2 = NSImage(byReferencingFile: path + "Chile.png")

var myImageArray: NSImage[] = []
myImageArray += image1
myImageArray += image2

-> [<NSImage 0x7fe371c199f0 ...>, <NSImage 0x7fe371f39ea0 ...>]

しかし、私は辞書の空の配列を初期化するための構文がうまくいきません。

初期値で初期化することは可能なので、Dictionariesの配列を持つことができるのは知っています。

let myDict1 = ["someKey":"someValue"]
let myDict2 = ["anotherKey":"anotherValue"]

var myDictArray = [myDict1]
myDictArray += myDict2

-> [["someKey": "someValue"], ["anotherKey": "anotherValue"]]

しかし、これは(あなたが構文を期待する)失敗します。

var myNewDictArray: Dictionary[] = []

というエラーで Cannot convert the expression's type 'Dictionary[]' to type 'Hashable'

そこで質問ですが、辞書項目の空の配列を初期化する正しい方法は何でしょうか? var myNewDictArray: Dictionary[] = [] は機能しないのでしょうか?

どのように解決するのですか?

辞書に型を付与する必要があります。

var myNewDictArray: [Dictionary<String, Int>] = []

または

var myNewDictArray = [Dictionary<String, Int>]()

編集 : より短い構文も使用可能です。

var myNewDictArray: [[String:Int]] = []

または

var myNewDictArray = [[String:Int]]()