swift - 我在尝试将数据设置为 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()
}
故事板:
解决方案
在您的第二个代码片段中,您永远不会初始化objetos
任何东西。因此,当您尝试在 上设置属性之一时objetos
,什么也没有发生,因为objetos
不存在。
objetos
解决方案:在尝试使用它之前进行初始化。
推荐阅读
- java - java 流:根据抛出的异常进行过滤的优雅方式
- gradle - Intellij 插件中的 java.lang.NoClassDefFoundError
- c# - 在 C# 中调用 Prolog 文件
- angular - Angular 中的 QR 扫描
- gis - 在 onclick 客户端事件上从服务器运行 GDAL/OGR 函数
- excel - 评论按分页符拆分
- javascript - 一页轮播中的两个视频 - Chromium
- c - 分叉后从子管道读取卡在未知位置的读取循环中
- postgresql - 不能在终端中使用 dropdb 命令删除 db posgres?
- ruby-on-rails - rspec match_array 递归?