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