XCode 12/Swift 4 个自定义单元格未显示在 UI Table 单元格视图中

XCode 12/Swift 4 Custom Cells not displaying on UI Table Cell View

好的,我正在尝试制作一个自定义 table,它具有来自 newsapi 的新闻提要,来自我的调试:api 调用等等数据被访问,只是它没有显示在 table 上,它显示为空白 table。

代码如下: 这是来自“第一个视图控制器”,因为我正在使用选项卡式模板 导入 UIKit

class FirstViewController: UIViewController, UITableViewDelegate,UITableViewDataSource {
    
    
    
    @IBOutlet weak var tableView: UITableView!
    
    var articles: [Article]? = []
    override func viewDidLoad() {
        super.viewDidLoad()
        
        fetchArticles()

    }
    func fetchArticles(){
        let urlRequest = URLRequest(url: URL(string: "https://newsapi.org/v2/top-headlines?country=us&?category=business&apiKey=sorrynotgivingmykey")!)
        
        let task = URLSession.shared.dataTask(with: urlRequest){(data,response,error) in
            
            if error != nil{
                print(error)
                return
            }
            self.articles = [Article]()
            do{
                let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String: AnyObject]
                
                if let articlesFromJson = json["articles"] as? [[String: AnyObject]]{
                    for articlesFromJson in articlesFromJson{
                        let article = Article()
                        if let title = articlesFromJson["title"] as? String, let desc = articlesFromJson["description"] as? String, let url = articlesFromJson["url"] as? String, let imageToUrl = articlesFromJson["urlToImage"] as? String, let date = articlesFromJson["publishedAt"] as? String{
                            article.headline = title
                            article.desc = desc
                            article.url = url
                            article.imageUrl = imageToUrl
                            article.date = date
//                            print(article.date)
//                            print(article.headline)
                        }
                        self.articles?.append(article)
                    }
                }
                DispatchQueue.main.async {
                    self.tableView.reloadData()
                }
                
            }catch let error{
                print(error)
            }
            
            
        }
        
        task.resume()
//        print(articles)

    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.articles!.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "worklmao", for: indexPath) as! ArticleCell
        cell.title.text = self.articles?[indexPath.item].headline
        cell.desc.text = self.articles?[indexPath.item].desc
        cell.date.text = self.articles?[indexPath.item].date

        print("lol lmao hahax help fuck shit")
        return cell
    }
    
    func numberOfSections(in tableView: UITableView) -> Int {
        1
        
    }
    
}

这是我在文章中使用的单元格 classes

import UIKit

class ArticleCell: UITableViewCell {

    @IBOutlet weak var date: UILabel!
    @IBOutlet weak var desc: UILabel!
    @IBOutlet weak var title: UILabel!
    @IBOutlet weak var ImgView: UIImageView!
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

这是文章class

import UIKit

class Article: NSObject {
    var headline: String?
    var desc: String?
    var url: String?
    var date: String?
    var imageUrl: String?
}

请记住,我确实为单元格正确设置了 class(至少我认为

不过,这就是我得到的:

不要忘记为 tableView 连接 dataSourcedelegate

将您的 tableView 出口更改为:

@IBOutlet weak var tableView: UITableView! {
   didSet {
        tableView.delegate = self
        tableView.dataSource = self
   }
}

几点:

  1. 您不必将 articles 数组声明为可选数组。只需这样做:

    var articles = [Article]()

  2. 尝试了解 JSON 解析的编码。