UITableViewから削除しようとするとエラーが発生します。私のTableViewはCoreDataのものです。ここに私のコードです。UITableViewから行を削除するときのエラー
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if (editingStyle == UITableViewCellEditingStyle.delete) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
context.delete(mealCore[indexPath.row])
appDelegate.saveContext()
print("context saved")
tableView.deleteRows(at: [indexPath], with: .fade)
}
}
私のコンテキストが保存されています。しかし、テーブルビューから削除しようとすると、次のエラーでクラッシュします。
無効な更新:セクション0の行数が無効です。更新後の既存のセクションに含まれる行数(5)更新(5)の前にそのセクションに含まれる行の数に、そのセクション(挿入された0、削除された1)に挿入または削除された行の数をプラスまたはマイナスし、 (0は移動し、0は移動しました)。
本当にありがとうございます。ありがとう!!!
役立つ可能性のあるコードを追加するだけですか? > UITableViewCellの{
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! CustomTableViewCell
let dateFormatter = DateFormatter()
dateFormatter.dateFormat="dd/mm/yyyy"
let mealRec = mealCore[indexPath.row]
cell.mealName!.text = mealRec.value(forKey: "meal") as? String
if let dateHolder = mealRec.value(forKey: "mealdate"){
cell.mealDate.text = dateFormatter.string(from: dateHolder as! Date)
}
if let data = mealRec.value(forKey: "mealimage")as? NSData {
cell.mealImage?.image = UIImage(data: data as Data)
}
return cell
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let managedContext = appDelegate.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName:"FoodLog")
do {
let results = try managedContext.fetch(fetchRequest)
mealCore = results as! [NSManagedObject]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return mealCore.count
}
テーブルビューのデータソースとしてNSFetchedResultsControllerを使用していますか? [NSFetchedResultsController:1行を削除するとアプリケーションがクラッシュする](http://stackoverflow.com/questions/21222840/nsfetchedresultscontroller-delete-1rowrowcrashes-the-app)を比較してください。 –
こんにちはマーティン、NSFetchRequestを使用しています –
iceman
「セクションの行数」と「インデックスパスの行のセル」を表示します。 –