title: How to populate TableView with jSON in Swift 3
body: <p>Sorry guys it is lil old me again. I am reaching out as I need help with a second tableView I would like to implement in a another view controller. I have copied this code basically from another tableView controller which actually works. So I'm not sure where I messed up here but I would really appreciate the help.</p>
  
  <pre><code>class MCViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
  
      let message_url = "https://www.distribber.com/api/resources/get_film_message/film_id/3825"
      let send_url = "https://www.distribber.com/api/resources/send_film_message"
      let film_id = "3825"
      var messageArray = [String]()
      weak var messageView : UITableView!
  
      func messageView(_ messageView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
          return messageArray.count
      }
      func messageView(_ messageView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; MessageTableViewCell {
          let cell = messageView.dequeueReusableCell(withIdentifier: "msgContent", for:indexPath) as! MessageTableViewCell
          // Configuring Cell
          cell.msgContent.text = messageArray[indexPath.row]
          // Returning the cell
          return cell
      }
  
  
  
      @IBOutlet weak var MessageInput: UITextField!
      @IBAction func Sendmsg(_ sender: Any) {
          Sendmsg(username:MessageInput.text!, password: film_id)
      }
  
      override func viewDidLoad() {
          super.viewDidLoad()
  
          messageView.dataSource = self
          messageView.delegate = self
          // Do any additional setup after loading the view.
          //let post_data: NSDictionary = NSMutableDictionary()
  
  
          //        post_data.setValue(username, forKey: "username")
          //        post_data.setValue(password, forKey: "password")
  
          let url:URL = URL(string: message_url)!
          let session = URLSession.shared
  
          let request = NSMutableURLRequest(url: url)
          request.httpMethod = "GET"
          request.setValue("740c94c51891c02b64d6c78840b478fe0b02fe2c", forHTTPHeaderField: "X-API-KEY")
          request.setValue("Basic YmhlZW0uZW5nckBnbWFpbC5jb206YmgzM20=", forHTTPHeaderField: "Authorization")
          request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
          // Do any additional setup after loading the view.
          var paramString = ""
  
  
          //        for (key, value) in post_data
          //        {
          //            paramString = paramString + (key as! String) + "=" + (value as! String) + "&amp;"
          //        }
          //
          request.httpBody = paramString.data(using: String.Encoding.utf8)
  
          let task = session.dataTask(with: request as URLRequest, completionHandler: {
              (
              data, response, error) in
  
              guard let _:Data = data, let _:URLResponse = response  , error == nil else {
  
                  return
              }
  
  
  
              let json: Any?
  
              do
              {
                  json = try JSONSerialization.jsonObject(with: data!, options: [])
                  if let parsedData = json as? [[String:Any]] {
                      for dict in parsedData {
                          if let title = dict["message"] as? String {
                              self.messageArray.append(title)
                              print(json)
  
                          }
                      }
                      OperationQueue.main.addOperation({
                          self.messageView.reloadData()
                      })
                  }
              }
              catch
              {
                  return
              }
  
              guard let server_response = json as? NSDictionary else
              {
                  return
              }
  
  
              if let data_block = server_response["data"] as? NSDictionary
              {
                  if let session_data = data_block["session"] as? String
                  {
                      //  self.login_session = session_data
  
                      let preferences = UserDefaults.standard
                      preferences.set(session_data, forKey: "session")
  
                      //  DispatchQueue.main.async(execute: self.LoginDone)
                  }
              }
  
  
  
          })
  
          task.resume()
      }
  
      override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
          // Dispose of any resources that can be recreated.
      }
  
      func Sendmsg(username:String, password:String)
      {
          let post_data: NSDictionary = NSMutableDictionary()
  
  
          post_data.setValue(username, forKey: "message")
          post_data.setValue(password, forKey: "film_id")
  
          let url:URL = URL(string: send_url)!
          let session = URLSession.shared
  
          let request = NSMutableURLRequest(url: url)
          request.httpMethod = "POST"
          request.setValue("740c94c51891c02b64d6c78840b478fe0b02fe2c", forHTTPHeaderField: "X-API-KEY")
          request.setValue("Basic YmhlZW0uZW5nckBnbWFpbC5jb206YmgzM20=", forHTTPHeaderField: "Authorization")
          request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
  
          var paramString = ""
  
  
          for (key, value) in post_data
          {
              paramString = paramString + (key as! String) + "=" + (value as! String) + "&amp;"
          }
  
          request.httpBody = paramString.data(using: String.Encoding.utf8)
  
          let task = session.dataTask(with: request as URLRequest, completionHandler: {
              (
              data, response, error) in
  
              guard let _:Data = data, let _:URLResponse = response  , error == nil else {
  
                  return
              }
  
  
  
              let json: Any?
  
              do
              {
                  json = try JSONSerialization.jsonObject(with: data!, options: [])
                  print(json)
              }
              catch
              {
                  return
              }
  
              guard let server_response = json as? NSDictionary else
              {
                  return
              }
  
  
  //            if let data_block = server_response["data"] as? NSDictionary
  //            {
  //                if let session_data = data_block["session"] as? String
  //                {
  //                    self.login_session = session_data
  //                    
  //                    let preferences = UserDefaults.standard
  //                    preferences.set(session_data, forKey: "session")
  //                    
  //                    DispatchQueue.main.async(execute: self.LoginDone)
  //                }
  //            }
  //            
  
  
          })
  
          task.resume()
  
  
      }
  
  
      /*
       // MARK: - Navigation
  
       // In a storyboard-based application, you will often want to do a little preparation before navigation
       override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
       // Get the new view controller using segue.destinationViewController.
       // Pass the selected object to the new view controller.
       }
       */
  
  }
  </code></pre>