Почему tableview не перезагружается с данными JSON в swift

#json #swift #uitableview #reload

Вопрос:

Мой экран выглядит так

введите описание изображения здесь

здесь, если я добавлю все поля и нажму кнопку отправить, мне нужно будет показать эти данные в tableview.. что произойдет, но если я остановлю сборку и запущу снова, то данные JSON tableview не будут отображаться, почему?

код:

  class WithdrawFundsVC: UIViewController, UITableViewDelegate, UITableViewDataSource 
 {

 private var withdrawData = WithdrawModel(dictionary: NSDictionary()){
    didSet  {
        tableView.reloadData()
    }
    }

   override func viewWillAppear(_ animated: Bool) {
    withdrawServicecall()
    tableView.reloadData()
   }

 func withdrawServicecall(){
    
 if bankmode == "B"
 {
  parameters = ["payment_method" : "B", "bank_name" : nankNameTextfield.text, "bank_account_no" : accNumTextField.text, "bank_account_holder_name" : accNameTextfield.text, "bank_code" : bankCOdeTextField.text, "bank_amount" : amountTextField.text] as [String : Any]
 }

 if bankmode == "P"{
  parameters = ["payment_method" : "P", "paypal_email" : paypalEmail.text, "paypal_amount" : paypalAmount.text] as [String : Any]
  }

    APIReqeustManager.sharedInstance.serviceCall(param: parameters as [String : Any], method: .post, loaderNeed: false, loadingButton: nil, needViewHideShowAfterLoading: nil, vc: self, url: CommonUrl.withdrawal_money, isTokenNeeded: true, isErrorAlertNeeded: true, isSuccessAlertNeeded: true, actionErrorOrSuccess: nil, fromLoginPageCallBack: nil) { [weak self] (resp) in

    if let code = ((resp.dict?["result"] as? [String : Any])){
        let success = code["status"] as? [String : Any]
        let message = success?["message"] as? String
        if message == "Success"{
           print("result of withdrawal (code)")
        }
    }else{
        self?.view.makeToast(CommonMessages.somethingWentWrong)
    }
    self?.withdrawData = WithdrawModel(dictionary: resp.responseDict as? NSDictionary ?? NSDictionary())
}
    
}

@IBAction func submitBtnaction(_ sender: Any) {
    withdrawServicecall()
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return withdrawData?.result?.withdrawal_list?.count ?? 0
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "WithdrawfundTableViewCell", for: indexPath) as! WithdrawfundTableViewCell
let indexData = withdrawData?.result?.withdrawal_list?[indexPath.row]
cell.transferModelabel.text = "(indexData?.payment_method ?? "") Transfer"
return cell

 }
 

с помощью этого кода данные успешно добавляются в tableview.. но если я остановлюсь и снова побегу.. просмотр таблицы не отображается. почему?

пожалуйста, направь меня

ИЗМЕНИТЬ: Ответ JSON с сервера

 {
"jsonrpc": "2.0",
"result": {
    "status": {
        "code": "-36739",
        "message": "Success",
        "meaning": "Withdrawal request is placed successfully and user wallet is updated with latest balance"
    },
    "withdrawal_list": [
        {
            "id": 16,
            "user_id": "6",
            "date": "2021-07-31",
            "amount": "5",
            "payment_method": "Bank",
            "paypal_email": null,
            "bank_name": "ABC",
            "bank_acc_holder_name": "Anny B",
            "bank_acc_no": "123ABcd",
            "bank_code": "123",
            "status": "N",
            "payment_date": null,
            "notes": null,
            "created_at": "2021-07-31 02:22:13",
            "updated_at": "2021-07-31 02:22:13"
        }
    ]
}
}
 

Комментарии:

1. Не связано с ошибкой, но арендуйте, прекратите использование NSDictionary в Swift. Используйте Decodable для синтаксического анализа JSON.

2. Я предполагаю, что WithdrawModel это неправильный синтаксический JSON анализ.

3. @Sulthan я добавил полный код.. пожалуйста, посмотрите.. и здесь для получения ответа «B» и «P «.. но после второго запуска представление таблицы не отображается

4. Вы все еще не добавили важный код. Нам нужно видеть WithdrawModel и в идеале также данные, поступающие с сервера, а не данные, которые вы отправляете.