Swift でがありDictionary
、特定のインデックスのキーを取得したいと考えています。
var myDict : Dictionary<String,MyClass> = Dictionary<String,MyClass>()
キーを反復処理してログに記録できることはわかっています
for key in myDict.keys{
NSLog("key = \(key)")
}
しかし、不思議なことに、このようなことは不可能です。なぜでしょうか?
var key : String = myDict.keys[0]
ベストアンサー1
これは、keys
が を返すためでありLazyMapCollection<[Key : Value], Key>
、 で添字付けすることはできません。これを処理する 1 つの方法は、辞書の を、添字付けする整数だけInt
進めることです。次に例を示します。startIndex
let intIndex = 1 // where intIndex < myDictionary.count
let index = myDictionary.index(myDictionary.startIndex, offsetBy: intIndex)
myDictionary.keys[index]
別の解決策としては、入力として配列を初期化しkeys
、結果に整数の添え字を使用することです。
let firstKey = Array(myDictionary.keys)[0] // or .first
辞書は本質的に順序付けられていないため、特定のインデックスのキーが常に同じであるとは期待しないでください。