#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
и в идеале также данные, поступающие с сервера, а не данные, которые вы отправляете.