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



我试图在视图控制器之间传递一个结构,但收到编译器错误"@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()
}
}

最新更新