ios - 将值(使用 Firestore 数据计算)应用于标签会触发“展开可选值”崩溃
问题描述
我有存储在 Cloud Firestore 中的成分价格表。我想计算特定收据的价格,将其传递给另一个 VC 并应用于标签,所以我编写了以下代码:
extension RecepiesViewController: UICollectionViewDelegate {
//Passing data to next VC
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destinationVC = segue.destination as! ResultViewController
destinationVC.result = totalPrice
}
//Recepie cell pressed
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print("You selected cell #\(indexPath.item)!")
// Calculating price for recepie
func recepieCalculation(_ completion: @escaping (Double) ->()) {
for ingridients in cakeRecepies![indexPath.item].ingridientList {
db.collection("Okey")
.document(ingridients.name)
.getDocument() { (document, error) in
if let document = document, document.exists {
let data = document.data()
if let price = data!["price"] as? Double, let count = data!["count"] as? Int {
let priceForOne = price / Double(count)
self.totalPrice = self.totalPrice + priceForOne * Double(ingridients.count)
}
} else {
print("Document does not exist")
}
completion(self.totalPrice)
}
}
}
recepieCalculation {totalPrice in
self.performSegue(withIdentifier: "goToResult", sender: self)
}
}
}
另一个VC代码:
import Foundation
import UIKit
import RealmSwift
class ResultViewController: UIViewController {
@IBOutlet weak var resultLabel: UILabel!
var result: Double = 0.0 {
didSet {
print(result)
resultLabel.text = String(format: ".%f", result)
}
}
@IBOutlet weak var recepieImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
}
}
并且在线resultLabel.text = String(format: ".%f", result)
出现错误
线程 1:致命错误:在隐式展开可选值时意外发现 nil
有什么问题?
解决方案
这是一个常见的错误。
在将要呈现 segue 的目标控制器的那一刻,出口尚未连接,因此将值分配给didSet
观察者中的标签会崩溃。
解决方案:
删除观察者
var result = 0.0
并赋值
viewDidLoad
override func viewDidLoad() { super.viewDidLoad() print(result) resultLabel.text = String(format: ".%f", result) }
推荐阅读
- mysql - 如何找出mysql中每个列的大小?
- r - 如何防止 R Expss 在输出数据框中将变量名称与行标签混合?
- javascript - p5.js 在太多音效后变慢
- java - 在 Recyclerview 中显示捕获图像和图库图像
- javascript - 使用 appendchild 和 html 表的乘法表
- facebook - 需要应用审核才能使 Facebook Webhook 正常工作。如何发展?
- android - 如何正确设置 UiAutomatorViewer 以检查用于使用 Appium 测试 Android 应用程序的元素?
- c# - 无法从 C# 和 ASP.NET MVC 中的 JsonResult 检索数据
- python - 基于 OOB 的 Python 问题,我是否想念一些东西?
- python - 如何正确取消所有挂起的 asyncio 任务并正确关闭 Python 中所有线程的所有循环?