在我的Swift应用程序中,我有一个Dictionary,然后我迭代到一个Keys数组和一个值数组。
如何在我的选择器中显示按字母顺序排列的键列表?
这是我的词典
let xxx = [“key”: “Value”, “key2”: “Value2”]
我遍历这个并将值放入两个不同的数组中。一个用于密钥,一个用于文本。
问题是迭代将字典放入随机顺序。我想看看是否有办法将拣选轮按字母顺序排列。
以下是拣货轮的代码:
Import UIKit
// Used for Picker Wheel - Initial selection Null.
var pickedXxx = ""
class ViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate {
/MARK: Picker Storyboard selectXxx connection here
@IBOutlet weak var selectXxx: UIPickerView!
lazy var index = xxxNumberArray.index(xxxNumberArray.startIndex, offsetBy: 0)
//MARK - Delegates and Data Source
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ _pickerView: UIPickerView,numberOfRowsInComponent component: Int) -> Int {
return xxxNumberArray.count
}
func pickerView(_ pickerView: UIPickerView,titleForRow row: Int,forComponent component: Int) -> String? {
return xxxNumberArray[row]
}
func pickerView(_pickerView: UIPickerView,didSelectRow row:Int,inComponent component: Int)
print ("Did Select Row function - Row is:")
print (row)
pickedXxx = xxxNumberArray[row]
// Set random = xxx row selected so 'Show xxx’ shows your selected xxx ***** ####
random = row
// Change Show xxx to 1; allows 'Show xxx’ button to work
showXxx = 1
// Clear xxx text on screen (Prior xxx text)
print ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
displayText.text = (" ")
print ("Blank Text sent to screen")
print ("****************************")
updateLabel()
}
// displayNumber is the name of the outlet for the xxx number
@IBOutlet weak var displayNumber: UILabel!
// displayText is the outlet for the xxx text
@IBOutlet weak var displayText: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Added for Picker
selectXxx.delegate = self
selectXxx.dataSource = self
}
有没有办法将选择器按字母顺序排列,还是需要编码才能将键阵列按字母顺序排列?
发布于 2018-09-10 13:27:39
欢迎来到SO。
这种非常广泛的问题很难回答。您应该编辑您的问题以显示您的数据结构和打包方式。
通常,字典为需要排序的数据制作糟糕的数据模型(因为字典本身就是一个无序集合。)
您可能想要创建一个结构数组,然后对该数组进行排序。
如果由于某种原因必须使用字典,那么您可以对键进行排序并将其用作选择器中的条目,假设键是类似字符串Comparable
的类型(实现<
和==
运算符的类型)。
let dict = ["aaa": "woof", "zzz": "snort", "ccc": "raspberry", "bbb": "bronx cheer"]
let keys = dict.keys.sorted { $0 < $1 }
print("Keys = ", keys)
//or to fetch the values in order:
keys.forEach { print("Value for \($0) = \(dict[$0]!)") }
以上的输出是:
Keys = ["aaa", "bbb", "ccc", "zzz"]
Value for aaa = woof
Value for bbb = bronx cheer
Value for ccc = raspberry
Value for zzz = snort
发布于 2018-09-10 14:21:10
斯威夫特4!尝试对键字典进行排序以获得按升序或降序排序的数组,然后填充选择器。新数组缺少值,因此您将使用选定的键搜索从原始字典中选择的值。
//上升
let sortedKeys = myDictionary.keys.sorted()
//降序
let sortedKeys = myDictionary.keys.sorted(by:>)
https://stackoverflow.com/questions/-100002599
复制相似问题