传递相同的对象context 2两个独立的视图控制器



我有一个managedObject正在从一个视图控制器传递到另一个第一次传递工作正常,但当我尝试传递下一个对象后,关系已经设置它不发送任何东西,并返回为nil,或者如果我尝试使用其他方法返回语法错误。我为视图控制器使用的代码如下

视图控制器1,第一个对象集:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let identifier = segue.identifier {
        switch identifier {
        case "popOver":
            if let VC = segue.destinationViewController as? ClassDeckNameViewController
            {
                if let ppc = VC.popoverPresentationController {
                    VC.modalPresentationStyle = UIModalPresentationStyle.Popover
                    ppc.permittedArrowDirections = UIPopoverArrowDirection.Any
                    ppc.delegate = self
                }
                VC.classSave = (sender as! ClassSelection)
            }
        default: break
        }
    }
}
@IBAction func buttonPriest(sender: AnyObject) {

    let entity =  NSEntityDescription.entityForName("ClassSelection", inManagedObjectContext: classMOC!)
    let newObject = ClassSelection(entity: entity!,insertIntoManagedObjectContext: classMOC)
    newObject.classname = "Priest"
    var error: NSError?
    if let err = error {
        println(err)
    } else {
        classMOC?.save(&error)
        self.performSegueWithIdentifier("popOver", sender: newObject)

    }
}

这会将对象毫无问题地传递给第二个视图控制器但这个不会进一步传递给最终呈现控制器为用户提供他们的"Deck"的最终选择:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showCardSelection" {
        let detailVC: CardSelectionViewController = segue.destinationViewController as! CardSelectionViewController
        detailVC.passedDeckObject = (sender as! Deck)
    }
}
@IBAction func enterButton(sender: AnyObject) {
    let entityDescription = NSEntityDescription.entityForName("Deck",inManagedObjectContext: managedObjectContext!)
    let storeDeck = Deck(entity: entityDescription!,insertIntoManagedObjectContext: managedObjectContext)
    storeDeck.deckname = usersDeckName.text
    storeDeck.classSelected = classSave!
    var error: NSError?
    managedObjectContext?.save(&error)
    if let err = error {
        status.text = err.localizedFailureReason

    } else {
        usersDeckName.text = ""
        status.text = "Deck Saved"
        self.performSegueWithIdentifier("showCardSelection", sender: storeDeck)
    }
}

我使passseddeckobject类型的一个变量甲板?在最后的视图控制器设置最终的关系方法,我知道我做错了什么,但我不确定!任何帮助这将是惊人的!

这看起来是一个配置错误的问题,其中segue是直接在故事板中触发的,而不是调用您的代码。因此,sender是一个按钮,而不是您期望的新实体实例。

要修复,断开故事板中的segue,并将(如果还没有)按钮连接到视图控制器中的动作方法。

最新更新