首页 > 解决方案 > 将单个 Dictionary 元素放入变量中

问题描述

我有一个变量:

reas : [String:[User]]?

我想对其进行排序并将其放入另一个视图控制器变量中

vc.OrederReas = reas.sorted { $0.1.count > $1.1.count }

我收到 orderReas 需要是类型的错误

[Dictionary<String, [User]>.Element]()

我所做的,现在我想从 orderReas 中放置一个信号元素(应该是 String:[User],有时可能是所有元素,但这不是问题)。

但我不知道如何定义它,我收到以下错误:

Cannot assign value of type 'Dictionary<String, [User]>.Element' (aka '(key: String, value: Array<User>)') to type '[Dictionary<String, [User]>.Element]' (aka 'Array<(key: String, value: Array<User>)>')

但我不能将变量定义为

var OrederReas = Dictionary<String, [User]>.Element

总而言之,我想要一个包含 [String:[User]] 的变量,将他分类为另一个变量,另一个变量将包含一个元素或原始变量中的所有元素。

谢谢!

标签: iosswiftdictionarycasting

解决方案


当您对字典进行排序时,结果将是键和值的数组元组。在你的情况下,如果你想拥有相同类型的字典,你可以将你的 Result(Tuple) 转换为字典,这样你就可以这样做:

let tupleOrederReas = reas.sorted {  $0.value.count > $1.value.count }
let dictionaryOrederReas = tupleOrederReas.reduce(into: [:]) { $0[$1.key] = $1.value }

//Finally Pass the Dictionary to VC variable

vc.OrederReas = dictionaryOrederReas

推荐阅读