更新数组的值

时间:2018-10-04 06:15:21

标签: ios arrays swift

在某个函数中,我将一个数组的值分配给另一个数组,就像这样……

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(with…

controller.grpDataArray = groupDetailsArray  <-- HERE

现在,在此行controller.grpDataArray = groupDetailsArray之后,控件转到另一个函数,其中填充了数组groupDetailsArray

现在我要实现的是,当数组值更改时,我想更新groupDetailsArraycontroller.grpDataArray的值。我认为可以通过使用getter..setter来完成。但是不确定如何..或者是另一种方法..?

2 个答案:

答案 0 :(得分:1)

尝试一下

family_id

答案 1 :(得分:0)

问题是执行此行controller.grpDataArray = groupDetailsArray时。您实质上是在深复制它。这意味着它将复制从结构到值的所有内容,并创建一个克隆,然后将其视为一个单独的变量。这意味着即使您更新另一个变量也不会受到影响。有两种方法可以实现您想要的目标。

1)将grpDataArray创建为一个单例并相应地对其进行更新。

2)使用KVO。

3)使用通知或委托。

4)我不知道您如何在Swift中浅拷贝一个数组,但是如果不是,可以代替它。

这是单例的例子。

创建一个名为Singleton.swift的swift文件作为NSObject的子类。这样做如下:

class Singleton: NSObject {
    static let shared = Singleton()
    var grpArray: Array<Any>!
}

现在在任何视图控制器中。

要初始化

Singleton.shared.grpArray = Array()

要更新

Singleton.shared.grpArray.append(10)

要登录

print(Singleton.shared.grpArray)

P.S单例不会持久,这意味着应用程序被杀死。 grpArray将会丢失它保存的所有数据。