Ios Swift数据模型

Ios Swift数据模型,ios,swift,model,Ios,Swift,Model,我是Swift的新手,我发现我有一个视图控制器,它应该管理36个文本字段和15个标签(使用文本字段执行的一些数学更新) 现在我的问题是,连接视图控制器中的所有插座似乎太多了。 我想创建一个数据模型,将数据存储到数组中,然后执行数学运算并更新UI 正如我所说,我是Swift的新手,似乎无法使用Outlet创建模型 这就是我所做的: 所有文本字段和标签都包含在主视图内的子视图中。因此,我将子视图与模型的类(EnergyModel)相关联,它已经立即给了我一个错误 以下是我的模型的代码: class

我是Swift的新手,我发现我有一个视图控制器,它应该管理36个文本字段和15个标签(使用文本字段执行的一些数学更新)

现在我的问题是,连接视图控制器中的所有插座似乎太多了。 我想创建一个数据模型,将数据存储到数组中,然后执行数学运算并更新UI

正如我所说,我是Swift的新手,似乎无法使用Outlet创建模型

这就是我所做的:

所有文本字段和标签都包含在主视图内的子视图中。因此,我将子视图与模型的类(EnergyModel)相关联,它已经立即给了我一个错误

以下是我的模型的代码:

class EnergyCalcModel {
    @IBOutlet weak var lightstextfield1: UITextField!
    @IBOutlet weak var lightstextfield2: UITextField!

    private var _lights1: String
    private var _lights2: String

    var lights2: Double {
        if lightstextfield2.text != nil {
            _lights2 = (lightstextfield2.text!).doubleValue
        }
        return _lights2
    }

    var _lights1: String {

        if lightstextfield1.text != nil {
            _lights1 = (lightstextfield1.text!).doubleValue
        }
        return _lights1
    }

    init(lights1: Double, lights2: Double) {
        self._lights1 = lights1
        self._lights2 = lights2
    }
}
在我的主要VC中:

var energyModel: EnergyCalcModel!

func calculate() {
    label.text = energyModel.lights1 * energyModel.lights2
}

你能告诉我吗?

我不确定你对“超载”有什么担心。如果您关心的是内存,那么当您将所有这些UI元素放到屏幕上时,内存已经被使用。在视图控制器中保留对它们的引用不会使事情变得更糟。它可能会使代码变得丑陋和重复,例如,如果您最终使用名为
textField1
textField36
的实例变量,而不是描述性的变量

如果这对你的应用程序和本视图有意义,请继续并将它们全部包含在内。在这方面没有什么可以“过载”的

可能会改进代码的一些事情(很大程度上取决于您如何使用这些文本字段和标签)可能包括:

  • 使用动态结构(如表视图)。如果每个表视图单元都有一个标签和一个文本字段,则可以轻松地拥有任意数量的标签和文本字段。如果符合您的需要,您还可以根据您的数据更改数字
  • 不要使用36个不同的插座,而是使用包含所有插座的插座集合(
    @IBOutletCollection
    )。不过,在阵列中找到正确的出口可能需要一些工作,因为您不能依赖阵列顺序。您可以使用视图上的
    标记
    属性来完成此操作,也可以对其进行排序

您应该将所有插座放在ViewController中,并使用插座中的数据创建模型。@将所有这些插座添加到ViewController不会导致性能问题吗?我会过载viewController吗?“…它已经立即给我一个错误。”如果您有某种错误消息,您应该始终包含该消息的文本。对不起。。。我再也不能复制它了。。。。我认为这与我分配给视图的类有关…我认为问题是我分配了模型的插座。。。也许我应该在控制器中分配它们。。。让我害怕的是大量的。。。汤姆,我不敢说谢谢你的回答。我要实施这个。基本上,“kWh/giorno”将在用户插入前两个字段后更新。第18行、第25行和第26行的某些内容将在输入所有必填字段后使用总和进行更新。我不确定是否可以使用表视图(不确定如何添加不同单元格中的所有列),但如果它不会导致任何内存问题,我想我可能会使用正常的输出。