无法使用类型为(((NSData ?, NSError?)-> Void)error的参数列表调用'getDataInBackground'

时间:2018-08-31 20:41:33

标签: swift parsekit

我遇到以下错误:Cannot invoke 'getDataInBackground' with an argument list of type '((NSData?, NSError?) -> Void)'

我找到了similar question,但是如您所见,该代码对我不起作用,这里是我的代码:

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 :(得分:1)

如果您只需省略闭包中的类型,就可以在Swift 3+中避免这些问题

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

在Swift 3+中,NSData替换为DataNSError替换为Error

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

除了这个问题之外,我们不鼓励您在cellForRow中运行非托管的异步任务,因为可以立即取消分配单元格。

而且-因为您是新手-请遵守命名约定,即structclass名称以大写字母(ResultsCell开头