Удаление записи таблицы в основных данных, чтобы она появлялась только после ввода новой записи, которая затем удаляет случайную запись - PullRequest
0 голосов
/ 10 ноября 2019

Ввод и хранение данных в CoreData работает нормально. Как и при удалении, по крайней мере, я так думал!

После того, как я удаляю запись из моего TableView - и иду, чтобы добавить другую запись, случайная запись из моей уже существующей таблицы записей будет заменена записью Iранее удалено. И я потеряю любое значение, которое я сохранил в той ячейке TableView, с той, которая только что вернулась.

Я разместил свой код ниже:

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    var items: [Upperbody] = []

    override func viewWillAppear(_ animated: Bool) {
        fetchData()
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        tableStyle()
    }

    //MARK - fetch the data from CoreData

    func fetchData() {

        do {
            items = try context.fetch(Upperbody.fetchRequest())
            print(items)
            DispatchQueue.main.async {
                self.tableView.reloadData()
            }
        } catch {
            print("Couldn't Fetch Data")
        }

    }

    func tableStyle() {
        self.tableView.rowHeight = 65.0
        self.tableView.separatorStyle = .singleLine

    }
}
extension UpperbodyDisplayTableViewController {

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

        cell.textLabel?.text = items[indexPath.row].entry
        cell.textLabel?.text = items.reversed()[indexPath.row].entry
        //cell.textLabel?.textColor = UIColor(red: 41/255, green: 128/255, blue: 185/255, alpha: 1.0)

        cell.backgroundColor = FlatSkyBlue()

        let date = items.reversed()[indexPath.row].date
        let time = items.reversed()[indexPath.row].time

        if let date = date, let time = time {
            let timeStamp = "Added on \(date) at \(time)"
            cell.detailTextLabel?.text = timeStamp
        }

        return cell

    }

    //MARK - The TableView method for displaying the entries

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return items.count
    }

    //MARK - the TableView edit - aka deleting the entry from the Tableview

    override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
        let delete = UIContextualAction(style: .destructive, title: "Remove entry") {  (contextualAction, view, boolValue) in

            let item = self.items[indexPath.row]
            self.context.delete(item)
            (UIApplication.shared.delegate as! AppDelegate).saveContext()

            //remove the entry by swiping right
            self.items.remove(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: .fade)

        }
        delete.image = UIImage(named: "trash.png")
        delete.backgroundColor = FlatWatermelonDark()
        let removeSwipeAction = UISwipeActionsConfiguration(actions: [delete])

        return removeSwipeAction
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...