Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift中的排序失败_Swift_Sorting_Dictionary - Fatal编程技术网

Swift中的排序失败

Swift中的排序失败,swift,sorting,dictionary,Swift,Sorting,Dictionary,我想对我的Dictionary itemDictionary进行排序,我将其定义为: var itemDictionary = [String: [Items]]() itemDictionary = itemDictionary.sorted { $0.0 < $1.0 } 但我得到了以下错误代码: 无法将类型“[key:String,value:[Items]]”的值分配给类型“[String:[Items]]” 有人知道为什么会这样吗?字典的定义是无序的。您只能在它上面调用sor

我想对我的Dictionary itemDictionary进行排序,我将其定义为:

var itemDictionary  = [String: [Items]]()
itemDictionary = itemDictionary.sorted { $0.0 < $1.0 }
但我得到了以下错误代码:

无法将类型“[key:String,value:[Items]]”的值分配给类型“[String:[Items]]”

有人知道为什么会这样吗?

字典的定义是无序的。您只能在它上面调用sorted,因为由于Swift 4,Dictionary符合Collection,但是由于Dictionary类型的无序性质,在Dictionary上调用sorted的返回值将是Array,因此是一个元组数组,其中元组包含键值对


如果你需要一个排序的数据结构,你应该考虑使用一个实际上可以被排序的数据结构。为什么要对字典进行排序?根据定义,字典是无序的集合类型。应用于字典的排序函数的结果是元组数组。这就是错误消息所说的:您不能将数组类型的值赋给dictionaryOh类型。好的,谢谢您提供这些信息!你能给我举个例子吗?我只需要保存键和数据数组。如果确实需要键-值对和排序,您可以轻松创建自己的具有键和值属性的泛型结构,并创建这些对象的数组,但您将失去字典提供的轻松订阅功能。如果您希望同时保持排序和键值对功能,那么在任何情况下都需要做出妥协。