Прямо сейчас я работаю в списке пользователей в swift 3, работаю правильно, покажу мне картинку, имя и в каком штате и стране проживает пользователь.
Теперь я добавляю «Обновить на слайде» и работаю хорошо, пока количество пользователей не станет меньше 5, когда число больше или равно 6, приложение закроется и покажет мне эту ошибку в консоли: (lldb)
и в строке ошибки: Thread 1: Fatal error: Index out of range
Вот код, который я использую:
var id = [String]()
var nombres = [String]()
var pais = [String]()
var departamento = [String]()
var municipio = [String]()
var direccion = [String]()
var telefono = [String]()
var celular = [String]()
var email = [String]()
@objc func getDatos(){
self.id.removeAll()
self.nombres.removeAll()
self.pais.removeAll()
self.departamento.removeAll()
self.municipio.removeAll()
self.direccion.removeAll()
self.telefono.removeAll()
self.celular.removeAll()
self.email.removeAll()
let postString = "sesp=\(id)”//sent data post
let url = URL(string: "https://.——.-.-?\(postString)")!
var request = URLRequest(url: url)
request.httpMethod = "POST"//sending type -> post method
request.httpBody = postString.data(using: .utf8)// concat the variables with utf8
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
//if error close
print("solicitud fallida \(String(describing: error ?? error))")//error
return
//broke the code
}
do {
//create the json object
if let json = try JSONSerialization.jsonObject(with: data) as? [NSDictionary] {
DispatchQueue.main.async {
//principal process
for result in json {
let id = (result["id"] as? String) ?? "no proporcionado"
let nombres = (result["nombres"] as? String) ?? "no proporcionado"
let pais = (result["pais"] as? String) ?? "no proporcionado"
let departamento = (result["depto"] as? String) ?? "no proporcionado"
let municipio = (result["municipio"] as? String) ?? "no proporcionado"
let direccion = (result["direccion"] as? String) ?? "no proporcionado"
let telefono = (result["telefono"] as? String) ?? ""
let celular = (result["celular"] as? String) ?? ""
let email = (result["email"] as? String) ?? ""
//array elements
self.id.append(id)
self.nombres.append(nombres)
self.pais.append(pais)
self.departamento.append(departamento)
self.municipio.append(municipio)
self.direccion.append(direccion)
self.telefono.append(telefono)
self.celular.append(celular)
self.email.append(email)
}
if json.count > 0 {
self.tableView.reloadData()//refresh the table again
self.refreshControl?.endRefreshing()//end refreshcontrol
} else {
self.refreshControl?.endRefreshing()//end refreshcontrol
}
}
}
} catch let parseError {
// error
print("error al parsear: \(parseError)")
let responseString = String(data: data, encoding: .utf8)
print("respuesta : \(String(describing: responseString))")
}
}
task.resume()
}
// slide for refresh
refreshControl = UIRefreshControl()
refreshControl?.backgroundColor = UIColor.white
refreshControl?.tintColor = UIColor.gray
refreshControl?.addTarget(self, action: #selector(ListaDoctoresTableView.getDatos), for: UIControlEvents.valueChanged)
let titulorefres = "Desliza para actualizar la lista...";
refreshControl?.attributedTitle = NSAttributedString(string: titulorefres)
self.getDatos()
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier3", for: indexPath) as! ListaDoctoresTableViewCell
cell.labelNombres.text = self.nombres[indexPath.row].description //Thread 1: Fatal error: Index out of range
cell.labelDepartamento.text = self.Departamento[indexPath.row].description
Файл базы данных выбора:
$statement=$conn->prepare("SELECT id, CONCAT(nombres, ' ', apellidos) AS nombres,
pais, depto, municipio, direccion, telefono, celular, email
FROM USERS");
$statement->execute();
$results=$statement->fetchAll(PDO::FETCH_ASSOC);
$categorias = array();
function getCats($col, $row) {
$categorias[$col['id']] = $row['id'];
$categorias[$col['nombres']] = $row['nombres'];
$categorias[$col['pais']] = $row['pais'];
$categorias[$col['depto']] = $row['depto'];
$categorias[$col['municipio']] = $row['municipio'];
$categorias[$col['direccion']] = $row['direccion'];
$categorias[$col['telefono']] = $row['telefono'];
$categorias[$col['celular']] = $row['celular'];
$categorias[$col['email']] = $row['email'];
}
array_push($categorias, $results);
echo $json=json_encode($results);