Массив возвращает значения в неправильных позициях - PullRequest
0 голосов
/ 22 мая 2019

У меня проблема с массивом, я работаю с WebService, который возвращает разные URL, я сохраняю эту информацию в массиве, а затем отображаю ее в UITableView, проблема в том, что в первой позиции моего массива есть должна быть ссылка, которая говорит, например: www.sitioWeb.com, но когда я хочу восстановить ее в методе didSelectedRow, иногда первая позиция имеет второй из моего массива

Я уже просмотрел информацию, содержащуюся в моем массиве, и все выглядит хорошо, информация, которую я восстанавливаю с помощью WebService, восстанавливается хорошо и без проблем

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return arrayTituloN.count
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! InicioTableViewCell
    cell.tituloN.text = arrayTituloN[indexPath.row]
    cell.links.isHidden = true

    //Limpiamos texto de la descripcion de la noticia
    let descripcionI = arrayExcerptN[indexPath.row]
    let betaDescripcion = descripcionI.replacingOccurrences(of: "<p>", with: "")
    let alphaDescripcion = betaDescripcion.replacingOccurrences(of: "</p>", with: "")
    let descripcion = alphaDescripcion.replacingOccurrences(of: "&nbsp;", with: " ")
    cell.descripcionN.text = descripcion

    //Limpiamos el texto que tiene los links pdf
    let linkI = arrayContentN[indexPath.row]
    let betaLink = linkI.components(separatedBy: ".pdf")
    let linkA: String = betaLink[0]
    let linkX = linkA.components(separatedBy: "https:")
    let linkS: String = linkX[1]

    let linkUltra: String = "https:"+linkS+".pdf"
    cell.contenidoN.text = linkUltra
    cell.contenidoN.isHidden = true

    print(cell.contenidoN.text!)

    //Mostraremos imagenes dependiendo el link
    if((cell.contenidoN.text?.contains(".pdf"))! && (cell.contenidoN.text?.contains(".png"))!){
        cell.imagenN.image = UIImage(named: "ImagenLauncher")
    }else if(cell.contenidoN.text?.contains(".pdf"))!{
        cell.imagenN.image = UIImage(named: "documentosXSize")
    }

    contenido = cell.contenidoN.text!

    return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print(contenido)

}

Когда я нажимаю первую ячейку моего стола, вы должны вернуть что-то похожее на это: "www.linkonthefirstcell.com" Проблема в том, что иногда я возвращаю второе значение моего массива в первой позиции.

Я попытался присвоить свой массив переменной «content» следующим образом: var contenido: String = "" И когда я загружаю всю информацию с моего WebService в массив, я делаю следующее:

contenido = arraytitleN [indexPath.row]

но у меня та же ошибка

1 Ответ

1 голос
/ 22 мая 2019

Вам нужно напечатать первое значение, когда вы нажимаете верхнюю ячейку, например

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  print(arraytitleN[indexPath.row]) 
}

, присваивая значение здесь

contenido = cell.contenidoN.text!

не гарантирует, что это значение при index = 0, так какcellForRowAt вызывается для всех видимых ячеек, поэтому его можно присвоить любому значению из любой другой строки

...