Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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
Ios Swift字典UIPickerView(键)和(值)Swift_Ios_Swift_Uipickerview_Pickerview - Fatal编程技术网

Ios Swift字典UIPickerView(键)和(值)Swift

Ios Swift字典UIPickerView(键)和(值)Swift,ios,swift,uipickerview,pickerview,Ios,Swift,Uipickerview,Pickerview,我目前正在使用Swift开发一个应用程序,其中我使用UIPickerView。我想在pickerView(myPickerView)中设置值 这是来自服务器的响应,我想在pickerView中显示组ListOfGrooc 代码如下:- 在viewDidLoad中,我有: Picker.delegate = self Picker.dataSource = self 那么我有必要的方法: func numberOfComponentsInPickerView(pickerView: UIPick

我目前正在使用Swift开发一个应用程序,其中我使用UIPickerView。我想在pickerView(myPickerView)中设置值

这是来自服务器的响应,我想在pickerView中显示组ListOfGrooc

代码如下:-

viewDidLoad
中,我有:

Picker.delegate = self
Picker.dataSource = self
那么我有必要的方法:

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
            return 1
        }

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
            return PickerData.count
        }

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
            return PickerData[row] trying to show SSSSS,DDDDD,GGGGG
        }

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
       print(PickerData[row]) expecting only id Int Value
    }
问题:-请有人向我解释如何在选择器视图标题中设置dict值,以及何时单击didSelectRow get dict键。任何帮助都将不胜感激


提前感谢。

根据您的数据,我创建了新的对象名CustomObject,并解析将在picker中显示的数据

这是我的密码:

struct CustomObject {
    let id: String
    let name: String
    init(id: String, name: String) {
        self.id = id
        self.name = name
    }
}
class FirstViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

    let PickerData: [String : Any] = ["listOfGrouoc": ["1": "DDDDD","2": "SDDDDD","3": "TTTT"],"TypeOfGrpos": ["STTTTT","TTTTT"],"SubTypp": ["333": "Shh","334": "SSS","543": " dfdf"],"GropName": ["1": "test","2": "test"]]
    var listOfGrouoc: [CustomObject] = []


    override func viewDidLoad() {
        super.viewDidLoad()

        let picker = UIPickerView(frame: CGRect(x: 0, y: 50, width: 300, height: 200))
        picker.dataSource = self
        picker.delegate = self
        self.view.addSubview(picker)

        if let list = PickerData["listOfGrouoc"] as? [String: String] {
            for objectID in list.keys {
                if let name = list[objectID] {
                    self.listOfGrouoc.append(CustomObject(id: objectID, name: name))
                }
            }
        }
        //Sort here
        self.listOfGrouoc.sort(by: { $0.id < $1.id})
    }

    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        1
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return listOfGrouoc.count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return listOfGrouoc[row].name
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        print(listOfGrouoc[row].id)
    }
}
struct自定义对象{
let id:String
let name:String
init(id:String,name:String){
self.id=id
self.name=名称
}
}
类FirstViewController:UIViewController、UIPickerViewDeleteGate、UIPickerViewDataSource{
让PickerData:[String:Any]=[“ListofGroooc”:[“1”:“DDDDD”,“2”:“SDDDDD”,“3”:“TTTT”],“TypeOfGrops”:[“STTTTT”,“TTTTTTT”],“SubTypp”:[“333”:“Shh”,“334”:“SSS”,“543”:“DFDFDF”],“GropName”:[“1”:“测试”,“2”:“测试”]
var LISTOGFROOC:[CustomObject]=[]
重写func viewDidLoad(){
super.viewDidLoad()
让picker=UIPickerView(帧:CGRect(x:0,y:50,宽度:300,高度:200))
picker.dataSource=self
picker.delegate=self
self.view.addSubview(选择器)
如果let list=PickerData[“ListOfGrooc”]as?[String:String]{
对于list.keys中的objectID{
如果let name=list[objectID]{
self.listofGroooc.append(CustomObject(id:objectID,name:name))
}
}
}
//在这里分类
self.listofGroooc.sort(按:{$0.id<$1.id})
}
func numberOfComponents(在pickerView:UIPickerView中)->Int{
1.
}
func pickerView(pickerView:UIPickerView,numberOfRowsInComponent:Int)->Int{
返回listofGroooc.count
}
func pickerView(pickerView:UIPickerView,titleForRow行:Int,forComponent组件:Int)->String{
返回ListOfGrooc[row].name
}
func pickerView(pickerView:UIPickerView,didSelectRow行:Int,不完整组件:Int){
打印(LISTOGFROOC[row].id)
}
}

您能否举例说明您试图在选择器中显示的数据的哪一部分,以及您希望在didSelectRow上获得的值?@elliott io请勾选“我试图仅显示名称”和“选择名称时获取Int value.Cool”。我发布了一个有效的答案。@elliott io好的,我会检查并更新您。感谢您的回复Hello Traj,是否有任何选项可以根据键值对该数组进行排序。因为我得到的是随机数组,但我想排序得更低higher@ShamDhiman请在viewDidLoad中检查我的更新。Bcz这是字典的特点,所以在生成数组后,我们需要按照您的预期对其重新排序。@traj谢谢您的回复,我已经尝试过了,但它对您不起作用me@traj我只想对子类型参数进行排序,比如3,6,9,当我对它进行排序时,它们会返回14,9,3,6,我不知道为什么,这对我来说没有任何解决方案?@ShamDhiman执行与
listogfrouoc
相同的操作,创建另一个对象并对其进行解析,然后再次排序。让我看看你试图对SubTypp排序的内容
struct CustomObject {
    let id: String
    let name: String
    init(id: String, name: String) {
        self.id = id
        self.name = name
    }
}
class FirstViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

    let PickerData: [String : Any] = ["listOfGrouoc": ["1": "DDDDD","2": "SDDDDD","3": "TTTT"],"TypeOfGrpos": ["STTTTT","TTTTT"],"SubTypp": ["333": "Shh","334": "SSS","543": " dfdf"],"GropName": ["1": "test","2": "test"]]
    var listOfGrouoc: [CustomObject] = []


    override func viewDidLoad() {
        super.viewDidLoad()

        let picker = UIPickerView(frame: CGRect(x: 0, y: 50, width: 300, height: 200))
        picker.dataSource = self
        picker.delegate = self
        self.view.addSubview(picker)

        if let list = PickerData["listOfGrouoc"] as? [String: String] {
            for objectID in list.keys {
                if let name = list[objectID] {
                    self.listOfGrouoc.append(CustomObject(id: objectID, name: name))
                }
            }
        }
        //Sort here
        self.listOfGrouoc.sort(by: { $0.id < $1.id})
    }

    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        1
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return listOfGrouoc.count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return listOfGrouoc[row].name
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        print(listOfGrouoc[row].id)
    }
}