在过去的18个月中,我一直在尝试将所有代码从ViewController中移除,使其更像MVC。 (因此标题)

通过在一个Class对象中执行以下操作,我自己迈出了小步,但现在我想进一步细分

一个非常普通的示例:一个文件包含数据

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


一个文件用于操作

class Adder {

var myObject = MyClass()

var z = 1

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


现在,对于ViewController的重要部分:

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),使得adder.z可以在后台自动更新,而无需涉及ViewController。这样,减法器类(例如)可以对相同的两个结构属性进行操作。

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

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

最佳答案

从您的代码中尚不清楚Data结构和MyClass之间到底是什么关系,但是如果MyClass对象具有所需的x&y值,则以下内容将起作用

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

类加法器{

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

}

让adder = Adder()
打印(adder.z)

关于ios - 运行!来自VCVCVC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34366192/

10-09 08:40