我试图通过segue将我的模型中的数据从我的文件CalculatorBrain传递给ViewController。我试图传递的var被指定为PropertyList,如下所示:
var program: PropertyList { // guaranteed to be PropertyList
get {
return opStack.map { $0.description }
}
set {
if let opSymbols = newValue as? Array<String> {
var newOpStack = [Op]()
for opSymbol in opSymbols {
if let op = knownOps[opSymbol] {
newOpStack.append(op)
} else if let operand = NSNumberFormatter().numberFromString(opSymbol)?.doubleValue {
newOpStack.append(.Operand(operand))
}
}
opStack = newOpStack
}
}
}
这是一个多MVC项目,覆盖segue函数位于ViewController中,名为&#34; CalculatorViewController。&#34;该函数尝试将数据从模型传递给ViewController,称为&#34; GraphingViewController&#34;像这样:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var destination: UIViewController? = segue.destinationViewController
if let navCon = destination as? UINavigationController {
destination = navCon.visibleViewController
}
if let gvc = destination as? GraphingViewController {
gvc.program = brain.program
}
}
我在GraphingViewController中设置变量程序,如下所示:
var program: AnyObject?
当我按下调用segue的按钮时,它会触发。会发生什么是brain.program中的数据被复制到gvc.program中。然而,它对模型来说是很难的。我不知道为什么会这样。 当我从segue中的控制器打印出程序时,我确实看到应该显示的程序。但是,当我在segue之后的任何地方打印它时,它已经消失了。
为什么要删除覆盖segue函数后的数据?
编辑:这是GraphingViewController中的委托函数。当我从这里打印出brain.program时,它不会打印出完整的opStack。
func graphForGraphView(xAxisValue: CGFloat, sender: GraphView) -> CGPoint? {
print("BRAIN PROGRAM 2: \(brain.program)")
brain.variableValues[brain.variableM] = 40.0
if let yValue = brain.returnEvaluate() {
print(yValue)
print("The returned value is: \(yValue)")
let point = CGPoint(x: 40.0, y: CGFloat(yValue))
if !point.x.isNormal || !point.y.isNormal {
return nil
} else {
return point
}
}
return nil
}