2015-12-19 54 views
0

我一直在尝试过去18个月,将所有代码从ViewController中取出,使其更像MVC。 (因此标题)跑步!来自VCVCVC

我已经能够做一个类对象中的以下问题提出了我自己的一小步,但现在我想打破它进一步

一个很普通的例子:一个文件中包含的数据

struct Data { 
var x = 0 
var y = 0 
} 

和一个文件操作

class Adder { 

var myObject = MyClass() 

var z = 1 

    func addThem() { 
    z = myObject.x + myObject.y 
    } 
} 
现在

的视图控制器的突出部分:

var data = Data() 
var adder = Adder() 

@IBAction func buttonPressed(sender: UIButton) { 

// user input via textfield 
data.x = Int(numeralOne.text!)! 
data.y = Int(numeralTwo.text!)! 

adder.addThem() // * 
answerLabel.text = String(adder.z) 
} 

最终我想省略用星号表示的行。我认为OO封装(数据)远离(加法器)允许adder.z在后台自动更新而不涉及ViewController。这样减法器类(比如说)就可以在相同的两个结构属性上运行。

我的问题是?如何从VC正确引用它们。

PS。如果我在函数中包含return语句,它没有任何区别。

+1

这只是一个计算属性。在Apple快速书中查看它。 – Paulw11

+0

同意。您可以在'Data'结构中为'z'使用计算属性 – timbo

回答

1

这不是从你的代码清晰准确的关系是什么Data结构和MyClass,但之间如果MyClass对象有X & Y的,你需要用的值下面的工作

 
class MyClass { 
    var x = 1 
    var y = 2 
} 

class Adder { 

    var myObject = MyClass() 
    var z: Int { 
    return myObject.x + myObject.y 
    } 

} 

let adder = Adder() 
print(adder.z)