我知道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,它应该完成这项工作。