Код не отображается в ViewController, когда приложение запускается, но ошибок не отображается - PullRequest
0 голосов
/ 12 июля 2020

Это весь мой код.

import UIKit
import SwiftUI
import SwiftyJSON
import SDWebImageSwiftUI

class NewsViewController: UIViewController {
    
    @IBAction func backTapped(_ sender: Any) {
    
    let homeViewController = self.storyboard?.instantiateViewController(identifier: Constants.Storyboard.homeViewController) as? HomeViewController
                   
                   self.view.window?.rootViewController = homeViewController
                   self.view.window?.makeKeyAndVisible()
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
           struct NewsViewController: View {
                
                @ObservedObject var list = getData()
                
                var body: some View{
                    
                    NavigationView{
                        
                        List(list.datas){i in
                            
                            HStack(spacing: 15){
                                
                                VStack(alignment: .leading, spacing: 10){
                                    Text(i.title).fontWeight(.heavy)
                                    Text(i.desc)
                                }
                                
                            WebImage(url: URL(string: i.image)!, options: .highPriority, context: nil)
                                
                            }.padding(.vertical, 15)
                    }
                }
            }
        }

            //NEWS PAGE API
            
            struct dataType : Identifiable {
                
                var id : String
                var title : String
                var desc : String
                var url : String
                var image : String
            }
            
            class getData : ObservableObject{
                @Published var datas = [dataType]()
                
                init() {
                    
                    let source = "http://newsapi.org/v2/top-headlines?sources=techcrunch&apiKey=5ba06ee74ea14df482f5e1e42cb4f9bc"
                    
                    let url = URL(string: source)!
                    
                    let session = URLSession(configuration: .default)
                    
                    session.dataTask(with: url) { (data, _, err) in
                        
                        if err != nil{
                            print((err?.localizedDescription)!)
                            return
                        }
                        
                        let json = try! JSON(data: data!)
                        
                        for i in json["articles"]{
                            
                            let title = i.1["title"].stringValue
                            let description = i.1["description"].stringValue
                            let url = i.1["url"].stringValue
                            let image = i.1["image"].stringValue
                            let id = i.1["publishedAt"].stringValue
                            
                            self.datas.append(dataType(id: id, title: title, desc: description, url: url, image: image))
                        }
                        
                    }
                }
            }
    }
    
    struct NewsViewController: View {
        
        @ObservedObject var list = getData()
        
        var body: some View{
            
            NavigationView{
                
                List(list.datas){i in
                    
                    HStack(spacing: 15){
                        
                        VStack(alignment: .leading, spacing: 10){
                            Text(i.title).fontWeight(.heavy)
                            Text(i.desc)
                        }
                        
                    WebImage(url: URL(string: i.image)!, options: .highPriority, context: nil)
                        
                    }.padding(.vertical, 15)
                }.navigationBarTitle("Headlines")
        }
    }
}
    //NEWS PAGE API

struct dataType : Identifiable {
    
    var id : String
    var title : String
    var desc : String
    var url : String
    var image : String
}
    
class getData : ObservableObject{
    @Published var datas = [dataType]()
        
    init() {
        
        let source = "http://newsapi.org/v2/top-headlines?sources=techcrunch&apiKey=5ba06ee74ea14df482f5e1e42cb4f9bc"
            
        let url = URL(string: source)!
            
        let session = URLSession(configuration: .default)
            
        session.dataTask(with: url) { (data, _, err) in
                
            if err != nil{
                print((err?.localizedDescription)!)
                return
            }
                
            let json = try! JSON(data: data!)
                
            for i in json["articles"]{
                    
                let title = i.1["title"].stringValue
                let description = i.1["description"].stringValue
                let url = i.1["url"].stringValue
                let image = i.1["image"].stringValue
                let id = i.1["publishedAt"].stringValue
                  
                DispatchQueue.main.async {
                    self.datas.append(dataType(id: id, title: title, desc: description, url: url, image:  image))
                }

            }
        }.resume()
    }
}
}

Image1 Изображение2

NewsViewController должен выглядеть как первое изображение, но похоже на второе. В коде вообще нет ошибок, но контроллер представления просто не отображает никаких изменений. Я занимаюсь этим довольно давно, но до сих пор ничего не изменилось. Буду признателен за любую помощь. Как я уже сказал, остальная часть приложения работает абсолютно нормально, но когда я перехожу на эту страницу, ничего не отображается

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...