Pass NSManagedObject from one view controller to another

I am developing a table based application using CoreData with Swift. I am trying to create an NSManagedObject from one view controller to another. Below is my code and the error I get.

In ViewController1.swiftI have the following code:

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {

    if segue.identifier == "Edit" {
        var selectedItem: NSManagedObject = myData[self.tableView.indexPathForSelectedRow().row] as NSManagedObject
        let vc2: ViewController2 = segue.destinationViewController as ViewController2

        vc2.item = selectedItem

    }
}

In ViewController2.swift:

class ViewController2: UIViewController {

    @NSManaged var item : NSManagedObject

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    // Other default func
}

Error switching to ViewController2:

[_TtC6myData18ViewController2 setItem:]: unrecognized selector sent to instance 0x111530000
+4
source share
2 answers

The @NSManaged classifier should only be used for properties in the NSManagedObject subclass, so it should not be used in your situation. That should work

class ViewController2: UIViewController {

    var item : NSManagedObject! 

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    // Other default func
}
+4
source

, , / NSException. , .

0

Source: https://habr.com/ru/post/1545508/


All Articles