将单个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]]的变量,将他排序到另一个变量中,另一个变量将保存原始变量中的一个元素或所有元素。

谢谢!

当你排序一个字典的结果将是一个数组元组的键和值。在您的例子中,如果您想拥有相同类型的字典,您可以将Result(Tuple)转换为Dictionary,这样您就可以这样做:

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

最新更新