简体   繁体   English

Swift 5 UITableViewController 来自 Json

[英]Swift 5 UITableViewController from Json

I'm new in swift 5. I have a trouble to call a function present in viewcontroller file:我是 swift 5 的新手。我无法调用 viewcontroller 文件中的 function:

func getJsonResultFromUrl (urlSrc: String, completion:@escaping (Arts)->()) {
    
    if let url = URL(string: urlSrc) {
        
        let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
                 guard let data = data else { return }
                do {
                    var returnValue: Arts?
                    let decoder = JSONDecoder()
                    returnValue = try decoder.decode(Arts.self, from: data)
                    completion(returnValue!)
                } catch {
                    fatalError("Couldn't parse \(url) as \(Arts.self):\n\(error)")
                }
            }
            task.resume()
    }
}

from another file with class:来自另一个文件 class:

import UIKit

class ListStockArticle: UITableViewController {
    var datacell: (Arts) -> () = {_ in } // = 0
    var url: String = ""
    var nombreDeLigne: Int?
   

    init() {
       
        let urlPrefixLocal = "http://urlmasqued"
        let urlPrefixRemote = "http://urlmasqued"
        
        if self.url.validURL {
            
        } else {
          self.url = urlPrefixRemote + ajax
        }
        print(self.url)
        
       
        let k: () =  getJsonResultFromUrl(urlSrc: url, completion: (Arts) -> () ) 
        print(k)
////// -> I have error : Editor placeholder in source file

       /* getJsonResultFromUrl(urlSrc: self.url) { k in Arts()
      
          //  self.datacell = Arts
           self.nombreDeLigne = k.count
            
        }
*/
 
            super.init(nibName:nil, bundle:nil) // *
        }
        required init(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }


  
override  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 20 //self.nombreDeLigne
}
    
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
         cell.textLabel?.text = "Test"
         return cell
     }
    
}

The URL and get data from url works fine, but how can I call the function from another page? URL 和从 url 获取数据工作正常,但我如何从另一个页面调用 function? The idea is to get a list of product, and create a cell per products.这个想法是获取产品列表,并为每个产品创建一个单元格。

I will really appreciate help, this sounds strange for me.我将非常感谢帮助,这对我来说听起来很奇怪。 Regards问候

Try this: Singleton class试试这个:Singleton class

class SampleController {

private static var privateSharedInstance: SampleController?
static var sharedInstance: SampleController {
    if privateSharedInstance == nil {
        privateSharedInstance = SampleController()
    }
    return privateSharedInstance ?? SampleController()
}
private init() {
    
}

func getJsonResultFromUrl () {
    
}

} }

Usage:用法:

   override func viewDidLoad() {
    super.viewDidLoad()
    SampleController.sharedInstance.getJsonResultFromUrl()
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在Swift中从UITableViewController发送短信 - Sending SMS from UITableViewController in Swift 如何将数据从UITableViewController传递到另一个UITableViewController? -iOS和Swift 2 - How to pass Data from a UITableViewController to another UITableViewController? -iOS & Swift 2 将数据从Firebase获取到UITableViewController-Swift - Get data from firebase into UITableViewController - swift 快速从UITableViewCell删除存储在UITableViewController中的数据 - Swift remove data stored in UITableViewController from UITableViewCell 来自UITableViewController的按钮将数据发送到detailViewController - swift - Button from UITableViewController sends data to detailViewController - swift Swift-UITableViewController中的单元格内的UITableView - Swift - UITableView inside Cell from UITableViewController 带有Json的UITableViewController - UITableViewController with Json 使用数组值Swift3从UITableViewController到UIViewController执行Segue - Perform Segue from UITableViewController to UIViewController with Array Value Swift3 如何在 Swift 中添加滑动以从 UITableViewController 中删除表格单元格? - How to add swipe to remove table cells from UITableViewController in Swift? 从另一个UITableViewController XCode7 Swift2获取numberOfRowsInSection - Get numberOfRowsInSection from another UITableViewController XCode7 Swift2
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM