当前位置:  开发笔记 > 编程语言 > 正文

在swift中存储对数组的引用

如何解决《在swift中存储对数组的引用》经验,为你挑选了1个好方法。

我想将一个数组传递给一个对象并存储对该数组的引用.我希望能够在此对象中修改此数组,并确保在其他任何位置修改它.

这是我想要完成的(代码如何工作)

class Foo {
   var foo : Array

   init(foo: Array) {
      self.foo = foo
   }

   func modify() {
      foo.append(5)
   }
}

var a = [1,2,3,4]
let bar = Foo(a)
bar.modify()
print(a) // My goal is that it will print 1,2,3,4,5

到目前为止我的发现

A)数组(默认情况下)以奇怪的方式传递.在修改数组长度之前,它是一个引用.一旦修改了长度,它就会被复制和修改.因此,如果我在对象中追加或删除任何内容,则不会在外面看到它

B)我可以inout在函数参数上使用.这将允许我在此功能中修改它.但是,只要我尝试将其分配给某个对象成员,我再次被A)击中

C)我可以在一些Container类中包装一个数组.这可能是最干净的方式.但是,我序列化/反序列化这些对象,我宁愿不把它放在Container中(因为我将不得不解决一些事情,用于序列化和反序列化并将其发送到服务器).

还有别的吗?我错过了一些允许我这样做的Swift构造吗?



1> Obsidian..:

您必须为此使用NSArray或NSMutableArray,因为Swift数组是值类型,因此任何赋值都会产生一个副本。

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有