動的辞書をループする関数をSwiftで作成しましたが、値が辞書型かどうかをチェックしようとすると型の比較条件は常に失敗します。ヒントとして警告を次値の型がチェックされているかどうかチェックする方法<String, Any>
Cast from '(key: String, value: Any)' to unrelated type 'Dictionary<String, Any>' always fails.
私は任意の値をキャストしようとしているわけではない、私はちょうど、変数値の型が辞書を持っているかどうかを確認します。
これは私のコードです:
func readNode(node: Dictionary<String, Any>, level: Int)
{
// Print spaces
for _ in 0 ... level
{
print(" ")
}
for (key, val) in node.enumerated()
{
// The following condition is always false (here is the issue)
if val is Dictionary<String, Any> {
print("Key \(key):")
readNode(node: val, level: (level + 1) * 2)
}
else
{
print("Key \(key): \(val)")
}
}
}
var mydict = Dictionary<String, Any>()
mydict = ["subindex2": 2, "subindex3": 3, "subindex4": ["whatever": "extra"]]
readNode(node: mydict, level: 0)
私はスウィフト3.0.1を使用しています。
なぜ「node」パラメータで列挙型を使用していますか? –