我有两个视图控制器;一个继承了另一个。 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
}
答案 0 :(得分:0)
这是对继承的误解。 VC2
继承自VC1
的事实意味着它具有相同的属性,但这并不意味着它具有相同的属性值。如果您有两个VC1
个实例,他们也不会共享属性值。
如果要在VC2
的实例中设置值,则需要将这些值传递给VC2
的特定实例。
类和实例之间的区别以及类继承的基础是面向对象编程(在任何语言中)的基本思想。如果您遇到此问题,您应该暂停一下,确保您了解OOP的基础知识。几乎每一篇文档都假定您已经拥有该背景。这不是明显的信息;它只是假设你已经学会了它。
一个很好的介绍是App Development in Swift。这些概念在第12课中介绍。