首页 > 解决方案 > 我在尝试将数据设置为 Struct 时做错了什么

问题描述

我正在尝试创建一个能够在屏幕之间传递数据的结构。但是,当我将数据设置为我的 Struct 属性然后我尝试在另一个屏幕中使用它时,我得到的值为“nil”。我究竟做错了什么?

对象结构:

import UIKit

struct Objetos {
    var nome: String
    var foto: UIImage
}

这就是我试图设置值的方式:

var objeto = Objeto(nome: "", foto: UIImage())

@IBAction func botaoAdcItem(_ sender: UIButton) {
    if (self.namePreview!.text != nil) && (self.imagePreview!.image != nil) {
       objeto?.nome = self.namePreview.text!
       objeto?.foto = self.imagePreview.image!

       self.navigationController?.popViewController(animated: true)
    }
    else { return }
}

这就是我试图读取数据的方式:

class ViewController: UIViewController, CLLocationManagerDelegate,  UITableViewDataSource {
     @IBOutlet weak var itensTableView: UITableView!
     var arrayNomes = NSMutableArray()

     var objeto: Objetos?
     var objetos = [Objetos]()

        //TableView
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

          for nome in objetos {
              arrayNomes.add(nome)
          }
          return arrayNomes.count //Nil value
     }

     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

          let cell = itensTableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! tableviewCell
          cell.nameCell.text = objeto?.nome //Nil value                    
          cell.imageViewCell.image = objeto?.foto //Nil value
          return cell
     }

     override func viewDidAppear(_ animated: Bool) {
          self.itensTableView.reloadData()
     }

故事板:

在此处输入图像描述

标签: swiftstruct

解决方案


在您的第二个代码片段中,您永远不会初始化objetos任何东西。因此,当您尝试在 上设置属性之一时objetos,什么也没有发生,因为objetos不存在。

objetos解决方案:在尝试使用它之前进行初始化。


推荐阅读