如何在prepare中的viewControllers之间通过引用传递swift数组(对于segue:



我知道swift数组结构是按值复制的,而不是按引用复制的。有没有一种简单的方法可以让我在prepare(对于segue:…方法(中通过引用来强制转换或传递数组,这样我就可以将对数组的引用从viewController a传递到viewController B?

我看到了一些关于将数组传递给函数的答案,但我只是想将其传递给其他视图控制器

为数组创建包装类,然后将该类引用传递到您想要的任何位置:

class ArrayWrapper {
let array: [YourType]
init(array: [YourType]) {
self.array = array
}
}

是的,您可以通过将值从viewController A传递到viewController B来实现它。您只需要在viewController B中获取一个数组(arrB(。

let VB = self.storyboard?.instantiateViewController(withIdentifier: "viewControllerB") as! viewControllerB
vc.arrA = arrA
self.navigationController?.pushViewController(vc, animated: true)

这不会将引用传递给arrB,而是传递面积的值。

如果你想使用segue将数组从一个控制器转移到另一个控制器,请在你的第一个控制器中创建数组,如

var dataSource : [ANY MODEL CLASS] = []

使用这种方法可以使用segue 传输数据

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "YOURSEGUE") {
let vc = segue.destination as! YOUCONTROLLER
vc.myArray = self.dataSource
}

在您的第二个控制器中创建相同类型的阵列

var myArray : [ANY MODEL CLASS] = []

所以现在,当你使用这个"YOURSEGUE"段移动到另一个控制器时,你的阵列将有数据

创建一个类似的全局数组

var myGlobalArray = [Int]()
class viewControllerA : UIViewController {
}

现在你可以在任何地方使用它。但这不是一件好事

如果将数组强制转换为NSArray,它应该完成这项工作。

最新更新