Ios 如何将数据源传递给第二个视图控制器?敏捷的

Ios 如何将数据源传递给第二个视图控制器?敏捷的,ios,swift,data-structures,model,Ios,Swift,Data Structures,Model,所以我有一个数据模型,它使用我的datasource类从plist中提取数组。在我的视图控制器中,我使用 let dataSource = DataSource() 然后我用 abilities = dataSource.ability[monster.ability! + 2] 我的问题是,当我从第二个Viewcontroller抓取Datasource时,在segue转换期间有2-4秒的延迟。如何在第二个视图控制器上传递数据源,这样我就可以读取值,而不必从第二个视图控制器中调用let d

所以我有一个数据模型,它使用我的datasource类从plist中提取数组。在我的视图控制器中,我使用

let dataSource = DataSource()
然后我用

abilities = dataSource.ability[monster.ability! + 2]

我的问题是,当我从第二个
Viewcontroller
抓取
Datasource
时,在segue转换期间有2-4秒的延迟。如何在第二个
视图控制器上传递数据源,这样我就可以读取值,而不必从第二个视图控制器中调用
let datasource=datasource()

但是,对于您的场景,我建议在第二个视图控制器中创建一个数组属性,该属性将保存您的数据源,但只能通过调用
prepare(对于segue:UIStoryboardSegue,sender:Any?
方法从第一个视图控制器传递它

下面是我如何将简单数据传递给另一个视图控制器的示例,该视图控制器基本上是一个主细节设置:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let destinationViewController = segue.destination as? DetailNoteViewController

    if segue.identifier == "toNoteDetailView" {
        guard let indexPath = tableView.indexPathForSelectedRow else { return }

        let note = self.notes[indexPath.row]
        destinationViewController?.note = note
    }
}

所以我试过你说的。听起来不错,但我遇到了一个问题。我无法在序列中使用标识符
[indexath.Row]
。我是否应该将if语句移动到
didSelectItemAt
?您可能需要使用代码片段编辑答案。.[indexPath.row]用于获取对象在与tableView相对应的数组中的位置,以便它可以将对象传递给第二个视图控制器