私はtableviewコントローラを持っていて、テーブルビューのために2つのセルを登録しています。データベースのデータに応じて、どのセルがtableViewの各行に登録されるかが決定されます。しかし、私のクラスには、別のクラスからデータをフェッチするためのポインタがあり、どのセルが使用されているかを判断する前にデータをフェッチする必要があり、コードはvoid関数であり、細胞。ここに私のコードです。私はテーブルビューの予期しない非void戻り値
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath, object: PFObject?) -> PFTableViewCell? {
let CellOne = tableView.dequeueReusableCell(withIdentifier: "Cellone", for: indexPath as IndexPath) as! CellOne
let CellTwo = tableView.dequeueReusableCell(withIdentifier: "CellTwo", for: indexPath as IndexPath) as! CellTwo
let CellObject = object?["Home"] as? PFObject
CellObject?.fetchIfNeededInBackground(block: { (cellsObject, error) in
if error == nil{
if cellsObject?["CellType"] as? String == "land"{
return CellOne
}else{
return CellTwo
}
}else{
}
})
}
'cellForRow(at:)'が遅すぎてデータを取得できません。以前にデータを取得しておく必要があります。これにより、迅速かつ簡単に正しいセルを返すことができます。あなたは現在、クロージャからセルを返そうとしています。クロージャがvoidリターンであることとは別に、それは非同期にも完了します – Paulw11