2017-07-01 14 views
0

私は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{ 

     } 
    }) 
} 
+0

'cellForRow(at:)'が遅すぎてデータを取得できません。以前にデータを取得しておく必要があります。これにより、迅速かつ簡単に正しいセルを返すことができます。あなたは現在、クロージャからセルを返そうとしています。クロージャがvoidリターンであることとは別に、それは非同期にも完了します – Paulw11

答えて

0

下のコードでCellOneとcellTwoを返すようにしようとすると、私が作成し、あなたのテーブルビューをロードする前に、関数内で自分の状態を配置しようとすると、「無効機能で予期しないvoid以外の戻り値」このエラーを取得しています値をtrueまたはfalseにするための変数、そしてテーブルビューの内部では、cellOneを開いていることを確認してください。cellTwo

0

あなたは関数から何も返さず、閉じてからセルを返しますが、関数は何も返さずに完了します。

関連する問題