删除核心数据中的tableview条目,使其仅在我输入新条目后才重新出现,然后删除一个随机条目

将数据输入并存储到CoreData中可以正常工作。和删除一样,至少我是这么认为的!

我从TableView中删除了一个条目,然后添加另一个条目后,已经存在的条目表中的随机条目将替换为我先前删除的条目。而且我将失去与刚才返回的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
    }
leavewinter 回答:删除核心数据中的tableview条目,使其仅在我输入新条目后才重新出现,然后删除一个随机条目

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3128379.html

大家都在问