我使用此代码来调整集合视图的模型。问题是,当我修改模型变量时,它还会修改 originalModel 变量,因为它是静态的,这不是我的意图。我想保持originalModel变量是静态的,只是将它的内容复制到模型变量中
class Helper{
static var originalModel: [MyModel]? = nil
static func modifyDataSourceBigView () -> [MyModel]? {
if let model = originalModel {
//model.removeAtIndexPath
// Some other staff to adapt the model
return model
}
}
static func modifyDataSourceSmallView () -> [MyModel]? {
if let model = originalModel {
//model.removeAtIndexPath
// Some other staff to adapt the model
return model
}
}
}
答案 0 :(得分:1)
问题出现是因为数组[MyModel]
包含对MyModel
个对象的引用。您的函数会返回originalModel
的副本,其中包含对原始 MyModel
个对象的引用。您有两种方法可以解决您的问题:
MyModel
声明为struct
,而不是class
,并且实例将按值传递,而不是通过引用传递; MyModel
符合NSCopying
并实施copyWithZone()
方法。答案 1 :(得分:0)
您可以像下面那样复制静态数组。但它不会是深层复制,如果你想深度复制你的对象数组,请参考link。
You have 14 unapplied migration(s)...