【发布时间】:2020-10-31 14:32:16
【问题描述】:
您好,我的应用程序致命错误:在隐式展开可选值错误时意外发现 nil。我了解到选项存在问题。但是我自己不知道怎么改,你能帮我吗?
ref = db.products(category: category.id)这是报错的地方
import UIKit
import FirebaseFirestore
class ProductsVC: UIViewController, ProductCellDelegate {
// Outlets
@IBOutlet weak var tableView: UITableView!
// Variables
var products = [Product]()
var category: Category!
var listener: ListenerRegistration!
var db : Firestore!
var showFavorites = false
override func viewDidLoad() {
super.viewDidLoad()
db = Firestore.firestore()
tableView.delegate = self
tableView.dataSource = self
tableView.register(UINib(nibName: Identifiers.ProductCell, bundle: nil), forCellReuseIdentifier: Identifiers.ProductCell)
setupQuery()
}
func setupQuery() {
var ref: Query!
if showFavorites {
ref = db.collection("users").document(UserService.user.id).collection("favorites")
} else {
ref = db.products(category: category.id)
}
listener = ref.addSnapshotListener({ (snap, error) in
if let error = error {
debugPrint(error.localizedDescription)
}
snap?.documentChanges.forEach({ (change) in
let data = change.document.data()
let product = Product.init(data: data)
switch change.type {
case .added:
self.onDocumentAdded(change: change, product: product)
case .modified:
self.onDocumentModified(change: change, product: product)
case .removed:
self.onDocumentRemoved(change: change)
}
})
})
}
【问题讨论】:
-
您的
category似乎未初始化。 -
但是 xcode 指向 id。
-
在运行时编码和记录时跳转到定义是不同的。
标签: objective-c swift swift3 swiftui