-1

我收到以下错误: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
}
4

1 回答 1

1

如果你简单地省略闭包中的类型,你可以在 Swift 3+ 中避免这些问题

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

在 Swift 3+NSData中被替换为Dataand NSErrorwithError

或者注释掉该行,重新输入并使用代码完成。

除了这个问题,您不鼓励在其中运行非托管异步任务,cellForRow因为可以立即释放单元。

并且 – 由于您是swift 新手– 请遵守命名约定,struct并且class名称以大写字母 ( ResultsCell) 开头。

于 2018-08-31T20:52:20.647 回答