上下文保存会向表视图添加新条目

时间:2016-11-16 03:44:46

标签: ios swift core-data tableview managedobjectcontext

我有一个tableviewcontroller,我在那里调用另一个View Controller。此新控制器填充选定表视图单元格上的对象。 在新的视图控制器中,我正在捕获交换机更改。当交换机打开时,我将交换机状态保存到从表视图发送的同一对象的核心数据中。

下面是调用新视图控制器的代码,segue是" ShowDetails"

override func prepare(for segue: UIStoryboardSegue, sender:Any?){
    if (segue.identifier == SegueAddBooksViewController){
        if let destinationViewController = segue.destination as? bookDetailViewController {
            destinationViewController.managedObjectContext = persistentContainer.viewContext
        }
    }
        else{
            if (segue.identifier == "showDetails"){
                let selectedIndex = TableView.indexPathForSelectedRow
                let selectedBook = fetchedResultsController.object(at: selectedIndex!)
                if let controller:DetailsController = segue.destination as? DetailsController{

                     controller.books = selectedBook
                }

            }
    }
    }

下面是开关状态从Off变为On时的代码。

func stateChanged(switchState: UISwitch){

    if switchState.isOn{
        let date = Date()
        books?.setValue(date, forKey: "endDate")
        books?.setValue(true, forKey: "bookState")

        do{
            try books?.managedObjectContext?.save()
        }catch let error as NSError{
            print("\(error)")
        }

        let dateFormat = DateFormatter()
        dateFormat.dateFormat = "MM/dd/YY"
        endBook.text = dateFormat.string(from: (books?.endDate)! as Date)

    }

这里的书籍是BooksDetail类型的var,它是一个核心数据实体,它使用func prepare从tableviewcontroller传递

我的问题是 books?.managedobjectcontext.save()保存修改后的数据,但是当我关闭应用并再次打开它(完全杀掉它)时,它会在表视图与更新的数据。如果我没有杀死应用程序,那么一切正常,我选择的单元格会正确更新。这是更新现有对象属性的正确方法吗?

0 个答案:

没有答案