未在swift中设置的类属性

时间:2015-06-18 07:03:57

标签: ios swift xcode6

我在ViewController中存储SimpleClass中的值,而我正在使用Secondview类。但我无法从SecondClass中的SimpleClass获取值。帮我 谢谢

Demo Project

2 个答案:

答案 0 :(得分:0)

它不起作用的原因是因为在SecondClass中您正在创建SimpleClass的新实例。

您真正想要做的是将SimpleClass实例从ViewController传递到SecondClass

执行此操作的一种方法是在“ViewController”

中使用prepareForSegue方法

on ViewController.swift

import UIKit

class ViewController: UIViewController {

    var simObject:SimpleClass?

    override func viewDidLoad() {
        super.viewDidLoad()
        self.title = "First Class";

        simObject = SimpleClass()
        simObject!.userName = "damu";
        simObject!.userPassword = "123";
        simObject!.address = "344r";

        print(simObject!.address)
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        // pass the simObject to secondClass
        if let secondClass = segue.destinationViewController as? SecondClass {
            secondClass.simpleClass = simObject
        }
    }

}

SeconClass.swift

import UIKit

class SecondClass: UIViewController {

    var simpleClass:SimpleClass?

    override func viewDidLoad() {
        super.viewDidLoad()
        self.title = "Second Class";

        if let passedSimpleClass = self.simpleClass {
            println(passedSimpleClass.address)
        }
    }

}

答案 1 :(得分:0)

如果您想要从ViewController到SecondView的值,您必须实现

  

覆盖func prepareForSegue(segue:UIStoryboardSegue?,发件人:   AnyObject?)

当您转到Secondview时,您正在获取temp.username的正确值,该值在日志中显示为nil。这是因为您正在创建一个SimpleClass的新实例,其变量初始化为nil。