Мой текущий проект - это проект Core Data в Swift, который создает заметки. Я пытаюсь установить managedObjectContext моего destinationVC
из currentVC
в prepareForSegue
, и я пытаюсь выяснить, как это сделать в Swift.Передача управляемого объекта ObjectContext с одного ViewController на другой ViewController в Swift?
Я использовал «консервированный код» Apple для создания проекта CoreData в Swift. Стек CoreData настроен в AppDelegate.swift
.
В настоящее время я создал метод создания фиктивных заметок в AppDelegate, если в контексте управляемых объектов нет заметок. Это работает.
Начальный вид при открытии приложения - это настройка VC Master-Detail, которая отображает объекты в моем контексте управляемых объектов. Это работает. Я могу щелкнуть заметку, и она отображается на DetailViewController. Это в основном «консервированный» код, создаваемый Xcode при запуске проекта.
Я создал кнопку UIBarButtonItem
«Добавить» на MasterViewController
, но я не могу понять, как передать MasterVC
«s managedObjectContext
к destinationViewController
. Когда я нажимаю это, он перебирается так, как следует, на DetailViewController
.
Вот свойства от моего MasterVC
:
var detailViewController: DetailViewController? = nil
var addNoteViewController:AddNoteViewController? = nil // I added this
var managedObjectContext: NSManagedObjectContext? = nil
Это мой prepareForSegue
метод в MasterViewController
.
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail" {
if let indexPath = self.tableView.indexPathForSelectedRow() {
let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as! NSManagedObject
let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController
controller.detailItem = object
controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
controller.navigationItem.leftItemsSupplementBackButton = true
}
}
if segue.identifier == "addNote" {
println("segue.identifier is addNote")
// I think I need to add stuff here so the destination VC "sees" the managedObjectContext
}
}
Я думаю, что также нужно добавить свойство на AddNoteVC
, что можно установить MasterVC
«s prepareForSegue
. Итак, как мне это сделать в Swift?
Пожалуйста, избегайте подобных заголовков и держите его кратким. – Cesare