Я создал приложение Event, где в приложении используется для регистрации участников на событие. Список участников будет перенаправлен на URL API. Когда тянет от 20+ до 400+ участников, это занимает от 1 секунды до 3 минут. Но при привлечении тысяч участников требуется 15 минут или больше, чтобы быть законченным. Я не могу понять, является ли проблема с подключением к Интернету или устройством, поскольку на моем устройстве установлено другое приложение, в котором также извлекаются тысячи данных, но для его завершения требуется всего 5 минут. Надеюсь, я все хорошо объяснил. Пожалуйста, помогите мне решить эту проблему, потому что я нахожусь на стадии тестирования для пользователя. Если вам нужен мой код для извлечения данных, я включил ниже. Спасибо.
APIService.swift
func getParticipants(enteredPincode: String,
participantType: ParticipantType,
completionHandler: @escaping (([Attendee]?, NetworkError?) -> Void))
{
guard let attendeesURL = URL(string: "\(GET_PARTICIPANTS_URL)/\(enteredPincode)/\(participantType)") else {
completionHandler(nil, .invalidURL)
return
}
let sessionManager = Alamofire.SessionManager.default
sessionManager.session.getAllTasks { (tasks) in
tasks.forEach({ $0.cancel() })
}
Alamofire.request(attendeesURL, method: .get, encoding: JSONEncoding.default).responseJSON(completionHandler: { (response) in
guard HelperMethod.reachability(responseResult: response.result) else {
completionHandler(nil, .noNetwork)
return
}
if let statusCode = response.response?.statusCode {
switch(statusCode) {
case 200:
if let jsonArray = response.result.value as? [[String : Any]] {
for anItem in jsonArray {
if let eventparticipants = anItem["event_participants"] as? [[String : Any]] {
var extractedAttendees = [Attendee]()
for participants in eventparticipants{
let attendee = Attendee.init(JSON: participants)
extractedAttendees.append(attendee!)
extractedAttendees = extractedAttendees.sorted(by: { (Obj1, Obj2) -> Bool in
let Obj1_Name = Obj1.lastName
let Obj2_Name = Obj2.lastName
return (Obj1_Name.localizedCompare(Obj2_Name) == .orderedAscending)
})
}
completionHandler(extractedAttendees, nil)
}
}
}
case 400:
completionHandler(nil, .badRequest)
case 404:
completionHandler(nil, .invalidCredentials)
case 409:
completionHandler(nil, .notSuccessful)
case 500:
completionHandler(nil, .serverError)
default:
completionHandler(nil, .uncapturedStatusCode)
}
}
})
}