在某个函数中,我将一个数组的值分配给另一个数组,就像这样……
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(with…
controller.grpDataArray = groupDetailsArray <-- HERE
现在,在此行controller.grpDataArray = groupDetailsArray
之后,控件转到另一个函数,其中填充了数组groupDetailsArray
。
现在我要实现的是,当数组值更改时,我想更新groupDetailsArray
和controller.grpDataArray
的值。我认为可以通过使用getter..setter来完成。但是不确定如何..或者是另一种方法..?
答案 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将会丢失它保存的所有数据。