2014-06-21 81 views
4

我正在开发一个使用CoreData和Swift的基于表视图的应用程序。我试图将NSManagedObject从一个视图控制器传递到另一个视图控制器。下面是我的代码和错误,我得到。将NSManagedObject从一个视图控制器传递到另一个视图控制器

ViewController1.swift我有以下代码:

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 

    } 
} 

ViewController2.swift

class ViewController2: UIViewController { 

    @NSManaged var item : NSManagedObject 

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

错误,当我原因请看ViewController2

[_TtC6myData18ViewController2 setItem:]: unrecognized selector sent to instance 0x111530000 
+0

尝试删除@ NSManaged,这是我的理解,只能用于NSManagedObject的子类,而不是视图控制器。 – rdelmar

+0

@rdelmar当我这样做时,它说类ViewController2没有初始化器 – Led

+0

var item:NSManagedObject!或var item:NSManagedObject?我不确定你应该使用哪一个。 – rdelmar

回答

4

@ NSManaged限定符只能用于NSManagedObject子类中的属性,所以不应该在您的情况下使用它。这应该工作,

class ViewController2: UIViewController { 

    var item : NSManagedObject! 

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

设置一个断点异常,以便你可以看到中的实际错误/消息是。你也可以看到它被抛出的位置。

+0

我做到了,我得到了[_TtC6myData18ViewController2 setItem:]:无法识别的选择发送到实例0x111530000任何想法这意味着什么兄弟? – Led

相关问题