使用To One类型保存托管对象

时间:2015-06-20 22:33:00

标签: ios swift core-data

我是iOS开发的新手,我正在尝试使用多个托管对象。

例如,测试应用程序有两个实体,一个用于Folder,另一个用于Planner。它是To One类型,因此每个文件夹都有一个计划器。 Planner有一个名为notes的属性,用于保存文本字段中的文本。

创建文件夹后,点击tableView中的单元格,用户将传递给传递selectedFolder对象的计划视图控制器。在规划视图控制器中,我试图确保在执行savePlanner功能时,这应该保存' UITextView'文字到'笔记'托管计划器对象的属性,该对象与' selectedFolder'有直接关系。

我不确定如何确保保存时Planner和Selected Folder之间存在关联。

在Planner View Controller中我有;

class PlannerViewController: UIViewController {

//SelectedFolder is the managed object of the cell row
var selectedFolder: Folder!
var planner: Planner?

@IBOutlet weak var plannerTextField: UITextView!


override func viewDidLoad() {
    super.viewDidLoad()

//Load Planner Data in text field here..


}


@IBAction func savePlanner(sender: AnyObject) {

    //Save Planner Notes To Folder

    //Get the context
    let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
    //get entity details
    let entity = NSEntityDescription.entityForName("Planner", inManagedObjectContext: moc!)
    //Create the managed object to be inserted
    let note = Planner(entity: entity!, insertIntoManagedObjectContext: moc!)

    //Add current Planner to selectedFolder
    selectedFolder.planner = note

    //Error
    var error: NSError?
    if moc!.save(nil){}

    //Storing Data
    note.notes = plannerTextField.text

    moc?.save(&error)

}

}

1 个答案:

答案 0 :(得分:1)

要创建一对一关系,您可以从任意一侧进行设置。在保存之前这样做。因此:

selectedFolder.planner = note
// or
note.folder = selectedFolder

当然,这只有在Core Data模型编辑器中正确设置关系和反向关系时才有效。