首页 > 解决方案 > 如何正确使用为结构准备segue?

问题描述

我无法访问 VC1 中给出的 Struct 数据,在 VC2 中,我在这里缺少什么?

我已经尝试了很多东西,而我能够访问数据的唯一方法是在 VC2 中像这样声明变量:var contactsOfUser: ContactStruct?但是这让我在 VC1 中的 Prepare for segue 中出错

无法将类型“[ContactStruct]”的值分配给类型“ContactStruct?”

无论如何,这是我的代码,也许我在某个地方搞砸了:

VC1:

//here i use performSegue:

DispatchQueue.main.async { [weak self] in
                        self?.performSegue(withIdentifier: "inviteFriends", sender: nil)


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {


        if segue.identifier == "inviteFriends"{
            let dest = segue.destination as! LetsInviteFriendsViewController
            dest.contactsOfUser = self.contacts

        }


    }

VC 2:

    var contactsOfUser: ContactStruct?


        @IBOutlet weak var tableView: UITableView!

            override func viewDidLoad() {
            super.viewDidLoad()

            print(contactsOfUser?.givenName)

标签: iosswiftsegue

解决方案


错误信息非常清楚。您正在尝试ContactStruct从 VC1 传递一个数组并将该数组分配给contactsOfUser您声明为单个ContactStruct. 只需将其更改为数组即可。

VC2:var contactsOfUser = [ContactStruct]()


推荐阅读