我正在做一个示例应用程序:一个添加按钮以添加联系人的电话号码;当我滑动该行时,它会显示删除,我可以删除行中的数据,同时,coredata中的数据也消失了。
我做了以下代码:添加功能适用于tableview和核心数据。但对于删除一个,我可以删除tableview中的数据,但似乎数据不会从核心数据中删除。但是,它没有给我一个错误信息。我只是不知道出了什么问题,为什么我不能在核心数据中删除它。请帮忙。谢谢。
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
if (editingStyle == UITableViewCellEditingStyle.Delete){
let item = items[indexPath.row]
managedContext.deleteObject(item)
items.removeAtIndex(indexPath.row)
tableView.reloadData()
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// fetching the contacts from the core data
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "Contact")
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
items = results as! [NSManagedObject]
} catch {
print("there is an error")
}
}
答案 0 :(得分:0)
您需要保存managedContext
以进行更改(删除)以反映。
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
if (editingStyle == UITableViewCellEditingStyle.Delete){
let item = items[indexPath.row]
managedContext.deleteObject(item)
do {
try managedContext.save()
} catch let error as NSError {
print("\(error)")
}
items.removeAtIndex(indexPath.row)
tableView.reloadData()
}
}