Как загрузить все данные в окне выбора - PullRequest
0 голосов
/ 20 июня 2019

Как загрузить все данные в окне выбора, теперь я могу загрузить только первые данные это мои данные из ответа JSON

** jsonResponse ==> Необязательно ([["PlanDate": 18/01/2019, "PlanDateFullFormat": 20190118], ["PlanDateFullFormat": 20190119, "PlanDate": 19/01/2019]])

jsonArray ==> [["PlanDate": 18/01/2019, "PlanDateFullFormat": 20190118], ["PlanDateFullFormat": 20190119, "PlanDate": 19/01/2019]]

jsonDictionary ==> ["PlanDate": 18/01/2019, "PlanDateFullFormat": 20190118]

planDate ==> 18/01/2019. ==> Я хочу загрузить всю дату завода в окне выбора

Loop json ==> (ключ: "PlanDateFullFormat", значение: 20190118)

Loop JSON ==> (ключ: "PlanDate", значение: 18/01/2019) **

Я не могу загрузить все данные в окне выбора

func getPlanDatetoPickerview(ptruckID: String)-> Void {
        .....

                //check data shipment for json Dictionary
                let planDate: String = jsonDictionary["PlanDate"] as! String
                print("planDate ==> \(planDate)")

                //show on pickerView
                for myplanDate in jsonDictionary{
                    print("Loop json ==> \(myplanDate)")
                }//for
                self.getpPlandate = [jsonDictionary["PlanDate"] as! String]
                .....
            }catch let myerror{
                print(myerror)
                //          check display plandate in database
               ....
                }//DispatchQueue
            }//catch
        }//task
        task.resume()
    }//getPlanDatetoPickerview

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Я предполагаю, что ваш pickerView настроен правильно, но вы видите только одну строку? Если это так, то, вероятно, из-за этой строки кода:

//change array to dictionary
guard let jsonDictionary:Dictionary = jsonArray.first else{
     return
}//guard
print("jsonDictionary ==>\(jsonDictionary)")

Вы получаете только первый элемент вашего массива.

Вместо этого я бы просто использовал jsonResponse следующим образом:

var planDates = [Any]()
if let jsonResponse = jsonResponse {
   for dictionary in jsonResponse {
      planDates.append(dictionary["PlanDate"])
   }
}

Затем вы можете использовать planDates для заполнения вашего pickerView.

Или, может быть, вы пытаетесь загрузить pickerView с данными из словаря?

Во-первых, ваш ViewController должен иметь подкласс UIPickerViewDataSource, UIPickerViewDelegate.

Затем в ViewDidLoad установите ViewController в качестве делегата / источника данных для вашего UIPickerView:

repeatPicker.delegate = self
repeatPicker.dataSource = self

Затем реализуйте методы делегата / источника данных:

   // The number of components of your UIPickerView
   func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

    // The number of rows of data
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        // Return number of planDate entries
    }

    // The data to return for the row and component (column) that's being passed in
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

    }
0 голосов
/ 20 июня 2019

На самом деле довольно просто загрузить данные в окно выбора.Это как UITableView.


class YourViewController {

    var yourArray: [YourObject] = []
    var yourPicker = UIPicker()

    override func viewDidLoad() {
        super.viewDidLoad()

        yourPicker.dataSource = self
        yourPicker.delegate = self
    }

}

// MARK: - UIPickerViewDataSource

extension YourViewController: UIPickerViewDataSource {

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

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

}

// MARK: - UIPickerViewDelegate

extension YourViewController: UIPickerViewDelegate {

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...