实例变量在ViewDidLoad()时重置为nil



我有一个继承自UIViewController的对象。在这个对象中,我有一个实例变量,它包含用户的配置文件(类型:UserProfile)。我在ViewDidLoad()之前设置这个变量,但是一旦我输入它,变量被重置为nil

下面是我的代码:
    class MapViewController: UIViewController {
        var userProfile: UserProfile!
        required init(coder: NSCoder) {
            super.init(coder: coder)
        }
        override init() {
            super.init()
        }
        override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
            super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        }
        func setProfile(userProfile: UserProfile) {        
            self.userProfile = userProfile
            //self.userProfile is OK
        }
        override func viewDidLoad() {
            super.viewDidLoad()
            self.userProfile is equal to nil....
       }
}

下面是控制器的声明:

self.mapViewController = MapViewController()
self.mapViewController?.setProfile(self.userProfile)
//The controller is pushed through the storyboard

你在这里创建了一个新的MapViewController实例:

self.mapViewController = MapViewController()
self.mapViewController?.setProfile(self.userProfile)
//The controller is pushed through the storyboard

你应该使用destinationcontroller from segue:

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) 
{
    if (segue.identifier == "showSecondViewController")
    {
        var second = segue.destinationViewController as SecondViewController
        second.setProfile(...)
    }
}

最新更新