在Swift中的视图控制器之间传递对象

时间:2015-12-06 19:22:57

标签: ios swift

我有一个奇怪的问题。我正在尝试将对象从ViewControllerA传递到CreateInvitationViewController

ViewControllerA我有以下代码:

func btnPassedRequestTouched(sender:UIButton!)
{
    print("button passed request touched")
    // pass request
    self.performSegueWithIdentifier("createInvitationSegue", sender: self)

}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if segue.identifier == "createInvitationSegue" {
        let createInvitationView = segue.destinationViewController as! CreateInvitationViewController
        let invitation = invitations[self.carousel.currentItemIndex]
        createInvitationView.invitation = invitation
    }
}

我在这一行放了一个断点:createInvitationView.invitation = invitation,我可以看到这个对象存在。

ViewControllerB我有以下代码:

class CreateInvitationViewController: UIViewController {

    var invitation = Invitation()

    override func viewDidLoad() {
        super.viewDidLoad()

        // if invitation is set, then use it to populate fields
        if let _ = self.invitation.id {
            invitationText.hidden = false
            invitationText.text = self.invitation.note
        }
    }

我在我制作的segue上使用Show动作,它看起来像这样: Show action 这是我得到的错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MyProject.CreateInvitationViewController 0x156365810> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key postRequest.'

你有什么建议为什么会这样?

1 个答案:

答案 0 :(得分:3)

它告诉你找不到postRequest。这意味着您要么有一些代码试图设置postRequest,或者更有可能的是,您在故事板中有一些控件试图连接到名为postRequest的插座,但是没有这样的插座存在(例如,过去你可能有一个带有该名称的插座,从代码中删除了插座,但忽略了相应地更新故事板)。