Невозможно вызвать 'getDataInBackground' со списком аргументов типа '((NSData ?, NSError?) -> Void) ошибка - PullRequest
0 голосов
/ 31 августа 2018

Я получаю следующую ошибку: Cannot invoke 'getDataInBackground' with an argument list of type '((NSData?, NSError?) -> Void)'

Я нашел аналогичный вопрос , но, как вы видите, код не работает для меня, вот мой код:

import UIKit
import Parse
.
.
.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    var cell: resultsCell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! resultsCell
    cell.usernameLbl.text = self.resultsUsernameArray[indexPath.row]
    cell.profileNameLbl.text = self.resultsProfileNameArray[indexPath.row]   
    //here error in line below:  
    self.resultsImageFiles[indexPath.row].getDataInBackground { (imageData: NSData?, error: NSError?) -> Void in   
        if error == nil{
            let image = UIImage(data: imageData)
            cell.profileImg.image = image
        }

    }
    return cell
}

1 Ответ

0 голосов
/ 31 августа 2018

Вы можете избежать этих проблем в Swift 3+, если просто пропустите типы в замыкании

self.resultsImageFiles[indexPath.row].getDataInBackground { (imageData, error) in

В Swift 3+ NSData заменяется на Data и NSError на Error

Либо закомментируйте строку, введите ее заново и используйте завершение кода.

Помимо проблемы, вам не рекомендуется запускать неуправляемые асинхронные задачи в cellForRow, поскольку ячейка может быть немедленно удалена.

И - поскольку вы новичок в Swift - пожалуйста, соблюдайте соглашение об именах, согласно которому имена struct и class начинаются с заглавной буквы (ResultsCell).

...