ios - 如何使用核心数据框架更新数据?

标签 ios swift core-data

我正在创建笔记应用程序,当我在编辑笔记内容后按“完成”按钮时,它不会更新内容,而是会创建一个新笔记并保留旧笔记而不更新。

我该如何解决这个问题

我知道问题出在哪里

这是代码

@IBAction func save(sender:UIBarButtonItem) {
        let title = titleField.text
        let text = textView.text


        if (text.isEmpty){

            let alertController = UIAlertController(title: "Warning !", message: "You need to write something first", preferredStyle: .Alert)


            let okayAction = UIAlertAction(title: "OK", style: .Default) { (action) in
                print(action)
            }
            alertController.addAction(okayAction)

            self.presentViewController(alertController, animated: false) {

            }


            }else{


            if let managedObjectContext = (UIApplication.sharedApplication().delegate as? AppDelegate)?.managedObjectContext {
                note = NSEntityDescription.insertNewObjectForEntityForName("Note", inManagedObjectContext: managedObjectContext) as! NoteData
                note.title = title!
                note.text = text!




                do {
                    try managedObjectContext.save()
                } catch {
                    print(error)
                    return
                }
            }

            self.navigationController?.popViewControllerAnimated(true)
        }


    }

enter image description here

最佳答案

您正在创建一个新笔记,因为您在保存函数中调用了 NSEntityDescription.insertNewObjectForEntityForName

您可以只保留对当前正在更新的注释的引用,更新其文本,然后保存。或者您可以使用 Find-Or-Create 模式。这将使您能够首先根据某些条件搜索现有笔记,如果找到符合条件的笔记,则返回它或创建符合条件的新笔记。虽然,只保留对您当前正在处理的笔记的引用是一个更好的选择。

关于ios - 如何使用核心数据框架更新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34472801/

相关文章:

objective-c - 我如何访问 swift 文件中的 objective-c block

cocoa - Swift:如何将 AVPlayerLayer 添加到 NSView 的后层

ios - 保存时核心数据是否自动更新多对多关系

ios - 使用选项卡栏 Controller 时是否可以通过按钮打开特定选项卡?

ios - UITableView 页脚,停止在内容上 float

ios - 无法导入桥接头 xcode 6.4

ios - 核心数据位置文件

ios - 在 UIScrollView Swift3 中加载 UIViewController

ios - snapchat 是如何实现设置下拉菜单的?

objective-c - 保存后 NSManagedObject 更改了属性