【发布时间】:2017-12-09 19:06:32
【问题描述】:
我试图删除 UITableView 中的单元格,但是当我删除它们时,它们会在我重新加载应用程序后重新出现。我从与核心数据一起存储值的同一个数组中删除。我是否也必须直接从 coreData 中删除?我怎么做?
这是我的代码:
///Function to remove TableView Cells
public func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCellEditingStyle.delete
{
SetTIME.remove(at: indexPath.row)
if SaveData.count == 4 {
SaveData.remove(at: myIndex*4)
SaveData.remove(at: (myIndex*4)+1)
SaveData.remove(at: (myIndex*4)+2)
SaveData.remove(at: (myIndex*4)+3)}
tableView.reloadData()
}
}
///CoreData
override func viewDidLoad() {
super.viewDidLoad()
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let newTrip = NSEntityDescription.insertNewObject(forEntityName: "Sets", into: context)
if DataGrab.count == 4{ // need to change after storing data in VC2 before sending
newTrip.setValue(DataGrab[0], forKey: "set1")
newTrip.setValue(DataGrab[1], forKey: "set4")
newTrip.setValue(DataGrab[2], forKey: "set3")
newTrip.setValue(DataGrab[3], forKey: "set2")}
do {
try context.save()
print("Saved")
}
catch{
//ProcessError
}
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Sets")
request.returnsObjectsAsFaults = false
do {
let results = try context.fetch(request)
if results.count > 0 {
for result in results {
if let set1 = (result as AnyObject).value(forKey: "set1") as? String
{
if SaveData.contains(set1){
} else {
SaveData.append(set1)
SetTIME.append(set1)
if let set2 = (result as AnyObject).value(forKey: "set2") as? String
{
SaveData.append(set2)
}
if let set3 = (result as AnyObject).value(forKey: "set3") as? String
{
SaveData.append(set3)
}
if let set4 = (result as AnyObject).value(forKey: "set4") as? String
{
SaveData.append(set4)
}
}
}
}
}
}
catch{
//ProcessErrors
}
【问题讨论】:
标签: swift xcode uitableview core-data delete-row