首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Swift中按字母排序选择器?[等候接听]

如何在Swift中按字母排序选择器?[等候接听]
EN

Stack Overflow用户
提问于 2018-09-10 05:15:17
回答 2查看 0关注 0票数 0

在我的Swift应用程序中,我有一个Dictionary,然后我迭代到一个Keys数组和一个值数组。

如何在我的选择器中显示按字母顺序排列的键列表?

这是我的词典

代码语言:javascript
复制
let xxx = [“key”: “Value”, “key2”: “Value2”]  

我遍历这个并将值放入两个不同的数组中。一个用于密钥,一个用于文本。

问题是迭代将字典放入随机顺序。我想看看是否有办法将拣选轮按字母顺序排列。

以下是拣货轮的代码:

代码语言:javascript
复制
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  
}  

有没有办法将选择器按字母顺序排列,还是需要编码才能将键阵列按字母顺序排列?

EN

回答 2

Stack Overflow用户

发布于 2018-09-10 13:27:39

欢迎来到SO。

这种非常广泛的问题很难回答。您应该编辑您的问题以显示您的数据结构和打包方式。

通常,字典为需要排序的数据制作糟糕的数据模型(因为字典本身就是一个无序集合。)

您可能想要创建一个结构数组,然后对该数组进行排序。

如果由于某种原因必须使用字典,那么您可以对键进行排序并将其用作选择器中的条目,假设键是类似字符串Comparable的类型(实现<==运算符的类型)。

代码语言:javascript
复制
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]!)") }

以上的输出是:

代码语言:javascript
复制
Keys =  ["aaa", "bbb", "ccc", "zzz"]
Value for aaa = woof
Value for bbb = bronx cheer
Value for ccc = raspberry
Value for zzz = snort
票数 0
EN

Stack Overflow用户

发布于 2018-09-10 14:21:10

斯威夫特4!尝试对键字典进行排序以获得按升序或降序排序的数组,然后填充选择器。新数组缺少值,因此您将使用选定的键搜索从原始字典中选择的值。

//上升

let sortedKeys = myDictionary.keys.sorted()

//降序

let sortedKeys = myDictionary.keys.sorted(by:>)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档