Я собирался получить данные из API, когда я попытался напечатать ответ из API, он успешно распечатался, и когда я попытался распечатать данные из объекта, он также успешно распечатался, но когда я проверил переменную участников в моем APIService
значение всегда ноль, поэтому при передаче значения в пользовательский интерфейс оно также превращается в ноль. Как я могу получить данные из JSON для отражения посещаемости в службе API. Я слишком озадачен этим. Помогите мне, пожалуйста. Спасибо.
Функция getParticipant в службе API
func getParticipants(passcode: String,
participantType: ParticipantType,
successBlock: @escaping (Attendees?) -> Void,
failureBlock: @escaping (Error) -> Void)
{
let attendeesURL = URL(string: "\(GET_PARTICIPANTS_URL)/\(passcode)/\(participantType)")
Alamofire.request(attendeesURL!, method: .get).responseJSON { (response) in
print(response)
if let error = response.error
{
failureBlock(error)
return
}
if let attendeeJSON = response.result.value as? [Dictionary<String, Any>],
let attendeeObj = attendeeJSON.first {
print(attendeeObj)
let attendees = Attendees.init(JSON: attendeeObj)
successBlock(attendees)
}
}
}
}
посетители в пользовательском интерфейсе, которые должны принимать данные, также становятся нулевыми, потому что посетители в APIService равны нулю
var passcode = ""
var attendees = [Attendees]()
@IBAction func submitButton(_ sender: UIButton) {
//readvalues
passcode = passcodeLabel.text!
//check if empty
if(passcode.isEmpty)
{
_ = SCLAlertView(appearance: appearance).showError("Ooops!", subTitle: "Please input valid event code.")
} else {
getParticipants()
}
}
//GET PARTICIPANTS FUNCTION
func getParticipants() {
// var participantType: ParticipantType!
let api = APIService(APIKey: passcode)
api.getParticipants(passcode: passcode, participantType: .all, successBlock: { (attendees) in
if let attendeesArray = attendees {
self.attendees = [attendeesArray]
do {
DispatchQueue.main.async{
_ = SCLAlertView(appearance: appearance).showError("Message", subTitle: "Details:\(self.attendees)")
return
}
}
}
}) { (error) in
DispatchQueue.main.async{
_ = SCLAlertView(appearance: appearance).showError("Network Error", subTitle: "Network Error:\(error)")
return
}
}
Пример JSON
[
{
"event_name": "Laugh Trip",
"event_participants": [
{
"participant_id": "6f1e7fd5-6da9-4d5b-bc91-4771aeaa5235",
"employee_number": "",
"last_name": "name",
"first_name": "name",
"middle_name": "",
"display_name": "name, name ",
"department_name": "IT",
"position_name": "Application Developer",
"registered_flag": true,
"registered_datetime": "2018-07-16T14:51:57.813",
"registration_type": 1,
"delete_flag": false,
"manual_reg_flag": false,
"out_flag": true,
"out_datetime": "2018-07-16T14:54:00.000",
"classification": 1,
"others": ""
},
Attendees
и его методinit(JSON:)
; и (b) вместо того, чтобы печататьresponse
, можете ли вы показать нам репрезентативный пример того, как выглядит фактический JSON? Есть тонкие проблемы, которые теряются, если мы не видим необработанный JSON. Например. когда выprint
response
, мы не можем различать числовые типы и строки, содержащие числовые типы (что является распространенным источником проблем). Только взглянув на необработанный JSON, мы можем это диагностировать. - person Rob   schedule 05.09.2018