Swift将变量传递给具有继承的第二视图控制器

时间:2017-06-25 17:47:45

标签: xcode inheritance swift3 uiviewcontroller

我有两个视图控制器;一个继承了另一个。 VC1有变量让我说学生我在那个视图控制器中发生了变异。 VC2继承VC1。我在VC2中有另一个变量,我希望将其设置为与VC1中的变量相同。我已经尝试了下面的选项,但它总是返回一个意外发现的nil,同时解开一个Optional值错误。我知道变量不是空的,因为我可以在VC1中打印出它的值就好了。那么我需要在代码中调整以正确地将变量从VC1发送到VC2?

在VC1中:

    var students: [Student]!
func setmystud(changeme: [Student]) -> Void {
        var mechangeme = changeme
        mechangeme = students
    }

在VC2中:

    var mystudents: [Student]!
override func viewDidLoad() {

       super.setmystud(changeme: mystudents)
        print(mystudents.count) //returns the error
    //OTHER TRY//  mystudents = super.students
    }

1 个答案:

答案 0 :(得分:0)

这是对继承的误解。 VC2继承自VC1的事实意味着它具有相同的属性,但这并不意味着它具有相同的属性值。如果您有两个VC1个实例,他们也不会共享属性值。

如果要在VC2的实例中设置值,则需要将这些值传递给VC2的特定实例。

类和实例之间的区别以及类继承的基础是面向对象编程(在任何语言中)的基本思想。如果您遇到此问题,您应该暂停一下,确保您了解OOP的基础知识。几乎每一篇文档都假定您已经拥有该背景。这不是明显的信息;它只是假设你已经学会了它。

一个很好的介绍是App Development in Swift。这些概念在第12课中介绍。