2017-12-13 10 views
-3
if checkedItems[indexPath.row] { 
    cell?.accessoryType = .checkmark 
    basketArray.append(theArray[indexPath.row]) 
} else { 
    cell?.accessoryType = .none 
    basketArray.remove(at: indexPath.row) 
}  

fatal error : Index out of range when i try to remove(at: indexPath.row)致命的なエラー:私は(時:indexPath.row)削除を使用する場合のインデックスが範囲外項目のフォームの配列

を削除するために、私はtableView.reloadData()を試みるが、それは動作しませんでした。どうすればこの問題を解決できますか? basketArrayは空の配列です。

+0

**あなたは何を期待します「basketArrayは空の配列である」それは致命的なエラーのクラッシュを解決する必要があり、以下試してください?** – the4kman

+1

basketArrayはインデックスを持つことが通常である空の場合範囲の。存在しない要素は削除できません。 – Antoine

+0

私はまず何かを配列に追加します。と私はエラーを取得する削除するとき! basketArrayは、すべてのチェックマークを選択したい配列です!チェックを外すと選択解除されます。 begin.butで動作しますが、エラーが発生します – tza

答えて

0

if checkedItems[indexPath.row] { 
      cell?.accessoryType = .checkmark 
      basketArray.append(theArray[indexPath.row]) 
     }else{ 
      cell?.accessoryType = .none 
      if basketArray.count > indexPath.row { 
       basketArray.remove(at: indexPath.row) 
      } 
     } 
+0

ありがとうございます! – tza

+0

これはあなたのクラッシュを修正しますが、意図した動作を生成しません。アイテムを配列に追加すると、最初にインデックス0、1、2などに追加されるので、indexPath.rowでアイテムを削除することはできません。あなたはbasketArrayを検索してindexPath.rowでオブジェクトのインデックスを見つけ、そのインデックスのオブジェクトを削除する必要があります – TegRa

+0

これは私のクラッシュを修正しましたが、実際には私の問題を解決しませんでした!私は何度かセルのチェックを外しますが、配列からコンテンツを削除しません! TegRaあなたはこれを修正する方法を知っています!私は迅速に新しいです! – tza

関連する問題