2017-07-30 20 views
0

私は練習プロジェクトのオンライン注文サービスを作成しています。私が最近読んだことの2つは、編集テーブルビュー機能です。アイテムを削除するためにスワイプすると、適切なアイテムがデータベースから削除されます。また、配列にアイテムが1つしかなく、削除しようとするとクラッシュします。誰もがこれに続いて何が起こっているか考えている?firebaseデータベースから削除

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 

    orderNumber.remove(at: indexPath.row) 
    itemsArray.remove(at: indexPath.row) 
    priceArray.remove(at: indexPath.row) 
    quantityArray.remove(at: indexPath.row) 

    databaseRef.child("Users/\((authRef.currentUser?.uid)!)/Order/\(orderNumber.remove(at: indexPath.row))").removeValue { (error, ref) in 
     if error != nil { 
      print(error?.localizedDescription as Any) 
     } else { 

     } 
    } 
} 

答えて

0

あなただけの配列は、それを削除する前にカウントをチェックする必要があるように見える: -

if orderNumber.count > indexPath.row { 
orderNumber.remove(at: indexPath.row) 
} 
if itemsArray.count > indexPath.row { 
itemsArray.remove(at: indexPath.row) 
} 
if priceArray.count > indexPath.row { 
priceArray.remove(at: indexPath.row) 
} 
if quantityArray.count > indexPath.row { 
quantityArray.remove(at: indexPath.row) 
} 
+0

それでもクラッシュします。問題は、データベース参照呼び出しで発生しています。私がデバッガに戻す唯一のことは、「範囲外のインデックス」です。 – user3103854

0

どうやら、あなたは二回orderNumberから削除しています。まず、ここで削除している:次に

orderNumber.remove(at: indexPath.row) 

あなたがここに削除している:

child("Users/\((authRef.currentUser?.uid)!)/Order/\(orderNumber.remove(at: indexPath.row))") 

あなたが複数のコレクションを使用している任意の具体的な理由を?

+0

それに気付き、修正しました。私は他の問題も解決しましたが、今削除すると、重複して、古いものと一緒にそれらのオプションで再びテーブルビューに移ります。 – user3103854

+0

現在のコードを貼り付けてください。 –

関連する問題