Как быстро получить пустые данные из API с помощью Alamofire?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как быстро получить пустые данные из API с помощью Alamofire?

Сообщение Anonymous »

Мне снова нужна помощь по поводу моих кодов. Немного непонятно, как пустые данные будут отражаться из APIService при переходе в ViewController.
Вот JSON< /p>

Код: Выделить всё

{
"responseMessage": "No record Found",
"data": []
}
Как видите, данные равны нулю.
Вот APIService

Код: Выделить всё

 typealias getDoctorPayoutSummaryTaskCompletion = (_ latestPayoutSummary: DoctorPayoutSummary?, _ error: NetworkError?) -> Void

static func getDoctorPayoutSummary(doctorNumber: String, periodId: Int, completion: @escaping getDoctorPayoutSummaryTaskCompletion) {

guard let latestPayoutSummaryURL = URL(string: "\(Endpoint.LatestCreditedAmount.latestPayoutSummary)?periodId=\(periodId)&doctorNumber=\(doctorNumber)") else {
completion(nil, .invalidURL)
return
}

let sessionManager = Alamofire.SessionManager.default
sessionManager.session.getAllTasks { (tasks) in
tasks.forEach({ $0.cancel() })
}

Alamofire.request(latestPayoutSummaryURL, method: .get, encoding: JSONEncoding.default).responseJSON { (response) in
guard HelperMethods.reachability(responseResult: response.result) else {
completion(nil, .noNetwork)
return
}

guard let statusCode = response.response?.statusCode else {
completion(nil, .noStatusCode)
return
}

switch(statusCode) {
case 200:
guard let jsonData = response.data else {
completion(nil, .invalidJSON)
return
}

let decoder = JSONDecoder()

do {
let currentPayoutSummary = try decoder.decode(RootDoctorPayoutSummary.self, from: jsonData)
print(periodId)
print(currentPayoutSummary.data ?? "data is nil")
print(currentPayoutSummary.data ?? "response is nil")
completion(currentPayoutSummary.data, nil)

} catch {
completion(nil, .invalidJSON)
print(error)
}

case 400: completion(nil, .badRequest)
case 404: completion(nil, .noRecordFound)
default:
print("**UNCAPTURED STATUS CODE FROM (getDoctorPayoutSummary)\nSTATUS CODE: \(statusCode)")
completion(nil, .uncapturedStatusCode)
}
}
}
Я пытался использовать точки останова для отслеживания моих кодов, и данные печати были равны нулю, если данные пусты на стороне APIService. Но, к сожалению, функция getDoctorPayoutSummary на стороне ViewController не распознает, если данные пусты. Он просто распознает, не пусты ли данные, и работает без сбоев.
Вот метод getDoctorPayoutSummary()

Код: Выделить всё

 func getDoctorPayoutSummary(doctorNumber: String) {
SVProgressHUD.setBackgroundColor(.lightGray)
SVProgressHUD.show(withStatus: "Processing...")

APIService.DoctorLatestCreditedAmount.getDoctorPayoutSummary(doctorNumber: doctorNumber, periodId: doctorPayoutWeek[0].periodId!) { (payoutsummary, error) in

guard let payoutSummaryDetails = payoutsummary, error == nil else {
if let networkError = error {
switch networkError {
case .noRecordFound:
self.noRecordView.isHidden = false
self.creditedAmountLabel.isHidden = true
case .noNetwork:
let alertController = UIAlertController(title: "No Network", message: "\(networkError.rawValue)", preferredStyle: .alert)

alertController.addAction(UIAlertAction(title: "OK", style: .default))
self.present(alertController, animated: true, completion: nil)
default:
let alertController = UIAlertController(title: "Error", message: "There is something went wrong.  Please try again", preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default))
self.present(alertController, animated: true, completion: nil)
}
}

SVProgressHUD.dismiss()
return
}

self.payoutSummary = payoutSummaryDetails
print(payoutSummaryDetails)

if self.payoutSummary == nil {
self.noRecordView.isHidden = false
SVProgressHUD.dismiss()
return
}

self.creditedAmountLabel.text = "₱\(self.payoutSummary.creditedAmount ?? 0.0)"
self.getPatientList()
self.noRecordView.isHidden = true
self.week1TableView.reloadData()

SVProgressHUD.dismiss()
return
}

}
Приношу извинения, если прошу слишком многого, но мне действительно нужна помощь в решении этой задачи, чтобы я мог перейти к другим задачам. Прошу вас немного времени, чтобы помочь мне.

Подробнее здесь: https://stackoverflow.com/questions/572 ... e-in-swift
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»