【发布时间】:2020-03-31 11:44:51
【问题描述】:
所以我想对 UnitMass 数组进行排序,但我想在特定布局中对其进行排序。我知道如何按字母顺序对其进行排序,但这并不是我想要知道如何做到这一点的任何人?
是否可以像这样对数组进行排序,我该怎么做?或者我可以定义数组的外观吗?
let spesificLayoutOfUnits =[ UnitMass.grams, UnitMass.kilograms, UnitMass.metricTons, UnitMass.stones, UnitMass.pounds, UnitMass.ounces ]
var toBeSorted = [ UnitMass.kilograms, UnitMass.pounds, UnitMass.metricTons, UnitMass.ounces, UnitMass.grams ]
我使用 spesificLayoutOfUnits 数组作为用户拥有的所有选项的数组。然后将此数组中的单位添加到 toBeSorted 数组中,该数组是所选单位的数组。
var options = spesificLayoutOfUnits as! [UnitMass]
var tempArray = [UnitMass]()
while toBeSorted.endIndex > positionOfUnit {
tempArray.append(toBeSorted.removeLast())
}
toBeSorted.append(options.remove(at: positionOfUnit))
while !tempArray.isEmpty {
toBeSorted.append(tempArray.removeLast())
}
【问题讨论】:
-
如果数组是硬编码的,那么只需按顺序添加值开始,如果不是硬编码,请多解释一下你想要做什么。
-
我想要排序的数组总是这样开始:[ UnitMass.kilograms, UnitMass.stones, UnitMass.pounds, UnitMass.ounces ],但是当轻按开关时,它将删除单位或添加它,我正在努力将单位放在正确的位置,例如(toBeSorted[0] 删除,然后添加一个新单位。)只要没有删除任何内容,一切都很好。我已经添加了要添加的代码。 @JoakimDanielson
-
我想说,如果这些是数组中唯一可能的居民,请不要添加或删除任何东西。只需切换每个元素是否有效。仍然不清楚真正的目标是什么,但这是我最初的想法。换句话说,保留两个列表,一个是您拥有的,另一个是说明要过滤掉的列表。
-
我的做法是使用 toBeSorted 数组,然后创建一个包含文本字段和标签的堆栈视图。但是如果用户按住一个按钮,它将创建一个包含开关和标签的 spesificLayoutOfUnits 数组的堆栈视图。 @马特