如何在准备中的 viewController 之间通过引用传递 swift 数组(对于 segue:?
how can I pass a swift array by reference between viewControllers in prepare(for segue:?
我知道 swift 数组结构是按值而不是引用复制的。有没有一种简单的方法可以在我的 prepare(for segue:... 方法中通过引用转换或以其他方式传递数组,以便我可以将对数组的引用从 viewController A 传递到 viewController B?
我看到一些答案提到将数组传递给函数,但我只是想将它传递给其他 viewControllers
为您的数组创建包装器 class,然后将 class 引用传递到任何您想要的地方:
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,而是将区域的值传递给 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" segue 移动到另一个控制器时,你的数组将有数据
像这样创建一个全局数组
var myGlobalArray = [Int]()
class viewControllerA : UIViewController {
}
现在您可以在任何地方使用它。但这可不是什么好事
如果将数组转换为 NSArray,它应该可以完成工作。
我知道 swift 数组结构是按值而不是引用复制的。有没有一种简单的方法可以在我的 prepare(for segue:... 方法中通过引用转换或以其他方式传递数组,以便我可以将对数组的引用从 viewController A 传递到 viewController B?
我看到一些答案提到将数组传递给函数,但我只是想将它传递给其他 viewControllers
为您的数组创建包装器 class,然后将 class 引用传递到任何您想要的地方:
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,而是将区域的值传递给 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" segue 移动到另一个控制器时,你的数组将有数据
像这样创建一个全局数组
var myGlobalArray = [Int]()
class viewControllerA : UIViewController {
}
现在您可以在任何地方使用它。但这可不是什么好事
如果将数组转换为 NSArray,它应该可以完成工作。