我想从Firebase FireStore获取数据,并将其放入新视图的表视图中 但是,当Tableview获取数据时,它是空的,并且我得到了展开错误,如图screenshot of unwrapping error

以下是我的表视图代码:

class ParcelViewController:UIViewController, UITableViewDataSource, UITableViewDelegate {
    
    let tableCell = ParcelTableViewCell()
    var parcelDataModel = MainViewModel()
    
    @IBOutlet weak var parcelTable: UITableView!
    
    override func viewDidLoad() {
        
       self.parcelDataModel.vc = self
        view.backgroundColor = .white
        parcelDataModel.getCollectionData()
        print("Hi")
    }
    
    var selectionDelegate : ParcelSelectionDelegate!
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if parcelDataModel.parcels.count > 0 {
            return self.parcelDataModel.parcels.count
        } else {
            return 0
        }
    }
        
        
        
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = parcelTable.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ParcelTableViewCell
            let current = self.parcelDataModel.parcels[indexPath.row]
            cell.parcelTitleLabel.text = current.parcel_type
            cell.parcelImage.image = UIImage(named: current.parcel_img_url)
            cell.parcelWeightlabel.text = "\(current.parcel_min_weight)  -  \(current.parcel_max_weight)"
            cell.parcelDescriptionLabel.text = current.parcel_description
            return cell
            
        }
        
        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
            let selected = self.parcelDataModel.parcels[indexPath.row]
            selectionDelegate.parcelDidSelect(parcelType: selected.parcel_type)
        }
    }
    
    

我想把这个代码self.parcelDataModel.vc = self放在视频加载之前

我在loadView中try 过,但不起作用.

推荐答案

我只需更改#OfRowsInSection中的if语句,如下所示

if parcelDataModel.parcels != nil {
        return parcelDataModel.parcels.count
        } else {
        return 0
    }

现在它起作用了.

Swift相关问答推荐

为什么我的引用类型对象在初始化后有3个强引用?

运行异步任务串行运行

Swift UI在视图中排序不同的 struct

SwiftUI状态更新

Swift:iVar + Equatable上的协议约束

插入/删除视图时的Swiftui动态过渡

从`compactMap()`闭包返回`nil`未通过结果类型判断

如何在SWIFT Memory中处理对VAR数组的更新(对COW感到困惑)

如何偏移HStack中的视图,但仍然约束框架以与偏移匹配?

如何在 Vapor 中制作可选的查询过滤器

我需要一些关于 SwiftUI 动画的帮助

为什么 UITapGestureRecognizer 对于 Swift 集合视图中的单元格图像无法正常工作?

在 RealmSwift 中表示范围值?

Swift 并发:@MainActor 对象上的通知回调

Swift:withCheckedContinuation 和 Dispatch QoSClass

异步等待不会在项目中触发,但在 Xcode playground 中工作正常

Swift 2 中的新 @convention(c):我该如何使用它?

无法分配给属性:self 是不可变的,我知道如何修复但需要理解

将强制向下转换视为可选将永远不会产生零

自动布局:获取 UIImageView 高度以正确计算单元格高度