2014-06-21 113 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

相關問題