Свойство @IBOutlet не может иметь не-объектный тип - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь передать структуру между контроллерами представления, но получаю ошибку компилятора "Свойство @IBOutlet не может иметь не-объектный тип". Я пытался добавить @ obj c, но все равно получаю ошибку. Как я могу передать эти данные между контроллерами представления? Почему я получаю эту ошибку и как ее исправить? Спасибо.

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!)        
    }

}

1 Ответ

1 голос
/ 12 марта 2020

Вы определяете свойство только с помощью @IBoutlet, если свойство загружается из XIB или раскадровки. Поскольку вы передаете структуру данных из другого контроллера представления, просто определите finalObj как обычную переменную.

class VCTwo2: UIViewController {
    var finalObj: DocObject!
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...