我遇到以下错误: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
}
答案 0 :(得分:1)
如果您只需省略闭包中的类型,就可以在Swift 3+中避免这些问题
self.resultsImageFiles[indexPath.row].getDataInBackground { (imageData, error) in
在Swift 3+中,NSData
替换为Data
,NSError
替换为Error
或者注释掉该行,重新键入它并使用代码完成。
除了这个问题之外,我们不鼓励您在cellForRow
中运行非托管的异步任务,因为可以立即取消分配单元格。
而且-因为您是新手-请遵守命名约定,即struct
和class
名称以大写字母(ResultsCell
开头