44403


TableViewに表示されているname(CoreDataのentityはPerson)のリストをスワイプで削除するfunctionを書いたのですが、行の削除後に空のセルが表示されたままになります。最下行を消した場合は、消した後に新たにレコードを追加すると、空のセルの下にレコードができます。tableViewのリロードだけで足りないということだと思いますが、どうすればよいでしょうか。  
アプリを再起動した場合は、削除された行は空にはならず上に詰めて表示されます。

[code]

    @IBOutlet weak var tableView: UITableView!
    var people: [NSManagedObject] = []
    
    extension ViewController: UITableViewDataSource {
    
    func tableView(_ tableView: UITableView,
                   numberOfRowsInSection section: Int) -> Int {
        return people.count
    }
    
    func tableView(_ tableView: UITableView,
                   cellForRowAt indexPath: IndexPath)
        -> UITableViewCell {
    
            let person = people[indexPath.row]
            let cell =
                tableView.dequeueReusableCell(withIdentifier: "Cell",
                                              for: indexPath)
                cell.textLabel?.text = person.value(forKeyPath: "name") as? String
            return cell
    }
    
    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
        return true
    }
    
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    
        if editingStyle == .delete {
            guard let appDelegate =
                UIApplication.shared.delegate as? AppDelegate else {
                    return
            }
    
            let managedContext =
                appDelegate.persistentContainer.viewContext
    
            let person = people[indexPath.row]
    
            managedContext.delete(person)
    
            do {
                try managedContext.save()
                people.append(person)
            } catch let error as NSError {
                print("Could not save. \(error), \(error.userInfo)")
            }
    
            tableView.reloadData()
    
        }
    }
    
    }
    
[/code]


CC BY-SA 4.0
2018-05-29T14:16:20.253
44371
2018-05-30T05:21:23.580
28628
question
uitableview coredata
Core data：TableViewの行削除後に空のTableViewCellが残る

[code]

    tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade)
    managedCondext.delete(person)
    
[/code]

の様にtableViewの行を削除してから`person`を削除してみるとどうなりますか？


CC BY-SA 4.0
2018-05-30T05:21:23.580
44403
2018-05-30T05:21:23.580
14745
44371
answer