@IBOutlet 属性 不能有非对象类型

@IBOutlet property cannot have non-object type

我试图在视图控制器之间传递一个结构,但我收到编译器错误“@IBOutlet 属性 不能有非对象类型”。我尝试添加@objc 但仍然出现错误。如何在视图控制器之间传递这些数据?为什么会出现此错误以及如何更正它?谢谢

import UIKit
struct DocObject: Codable {
    let filename: String
    let doclink: Int
}

class ViewController: UIViewController {   
    @IBOutlet weak var textField: UITextField!   
    //  var nameText = ""
    var obj = DocObject(filename: "filename", doclink: 123)    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    @IBAction func done(_ sender: Any) {
        print ("In VC1 nameText  ", obj)
        performSegue(withIdentifier: "name", sender: self)   
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let vc = segue.destination as! VCTwo2
        vc.finalObj = obj   
    }    
}





import UIKit
class VCTwo2: UIViewController {
    @IBOutlet var finalObj: DocObject!

    //  var finalName = 0

    override func viewDidLoad() {
        super.viewDidLoad()

        print ("In VC2  ", finalObj!)        
    }

}

如果 属性 是从 xib 或情节提要中加载的,则您只需使用 @IBoutlet 定义 属性。由于您从另一个视图控制器传递数据结构,只需将 finalObj 定义为常规变量。

class VCTwo2: UIViewController {
    var finalObj: DocObject!
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}