将数据输入并存储到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
}