Xcode 使用 segue 传递数组

Posted

技术标签:

【中文标题】Xcode 使用 segue 传递数组【英文标题】:Xcode pass Array by using segue 【发布时间】:2019-08-12 12:46:13 【问题描述】:

我做了一个数组,并把一些值放进去。

通过使用 segue,

我想将数组发送到另一个视图。

这里是代码。

-- 视图1 -----

override func viewDidLoad() 
    super.viewDidLoad()
    var receivedData: Array<String> = Array()
    receivedData.append("0.123")
    receivedData.append("0.190")
    receivedData.append("0.210")
    receivedData.append("0.213")



 @IBAction func graph(for segue: UIStoryboardSegue, sender: Any?) 


        if segue.destination is GraphViewController
        
            let vc = segue.destination as? GraphViewController
            vc?.transferedData = receivedData
        


-- 视图2 -----

var transferedData: Array<String> = Array()

但它不起作用。

错误点赞

“发送到实例的无法识别的选择器”

“由于未捕获的异常'NSInvalidArgumentException'而终止应用程序, 原因:无法识别的选择器发送到实例“

" libc++abi.dylib: 以未捕获的 NSException 类型异常终止"

帮我解决这个问题。

感谢阅读。

【问题讨论】:

你必须在类的顶层声明receivedDatagraph(for segue 是什么? 我想使用“Charts”库绘制图表。所以我把 segue 命名为 graph。 “在类的顶层声明receivedData”是什么意思?我应该在 View2 上声明吗? top level 表示在viewDidLoad之外 【参考方案1】:

receivedData 数组的引用将无法在您创建的 viewDidLoad() 方法之外访问。您必须将其声明为该类的全局数组,然后您可以在整个类中访问该数组。


请在viewDidLoad() 函数之外声明receivedData。请执行以下操作。

var receivedData: Array<String> = Array()

override func viewDidLoad() 
    super.viewDidLoad()

    receivedData.append("0.123")
    receivedData.append("0.190")
    receivedData.append("0.210")
    receivedData.append("0.213")

【讨论】:

以上是关于Xcode 使用 segue 传递数组的主要内容,如果未能解决你的问题,请参考以下文章

Xcode中多个Segues中通过UITableViews传递数据(三个Segues)

使用 segue 传递图像的指针类型不兼容?目标c Xcode

准备使用数组进行 Segue - Xcode 8.0 Swift 3.0

使用 segue 在 View Controller 之间传递变量

使用没有 segues 的协议将数组从 appDelegate 传递到 Viewcontroller

快速通过segue传递数组