2016-10-05 3 views
0

Я пытаюсь разобрать json и загрузить его в CustomTable, мой json проанализировал успешно, но не смог загрузить данные в пользовательском интерфейсе, я попытался добавить тестовые данные и отобразить их. Поэтому я предполагаю, что это связано с определением области. Я попытался с помощью других ответов на тот же вопрос, но все же это не для работы меняUITableView не загружает данные с помощью SwiftyJSON и Alamofire

import UIKit 
import Alamofire 
import SwiftyJSON 

class NewsViewController: UIViewController, 
    UITableViewDelegate, UITableViewDataSource { 

    @IBOutlet weak var tableView: UITableView! 



    var newsPosts = [NewsPost]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     tableView.delegate = self 
     tableView.dataSource = self 

     getNewsPost() 


    } 

    func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let post = newsPosts[indexPath.row] 

     if let cell = tableView.dequeueReusableCell(withIdentifier: "NewsCell") as? NewsPostCell{ 
     cell.configureCell(post: post) 
     return cell 
    }else{ 
     let cell = NewsPostCell() 
     cell.configureCell(post: post) 
     return cell 
    } 
} 


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return newsPosts.count 
} 


func getNewsPost(){ 
    Alamofire.request(URL_BASE + NEWS_URL).responseJSON { response in 


     let json = JSON(data: response.data!) 

     if let dict = json.dictionaryObject{ 
      if let result = dict["data"] as? [NSDictionary]{ 
       for data in result{ 
        guard let title = data["title"] as? String else{ 
         return print("title is nil") 
        } 
        guard let href = data["href"] as? String else{ 
         return print("href is nil") 
        } 
         guard let image = data["image"] as? String else{ 
          return print("image is nil") 
         } 
         guard let content = data["content"] as? String else{ 
          return print("content is nil") 
         } 
         guard let _ = data["timestamp"] as? String else{ 
          return print("timestamp is nil") 
         } 
         guard let type = data["type"] as? String else{ 
          return print("type is nil") 
         } 

         print(type) 

         let post = NewsPost(title: title, href: href, 
         image: image, timestamp: 
         "1 day ago", content: content, type: type) 

         self.newsPosts.append(post) 
        } 
        self.tableView.reloadData() 
       } 
      } 
     } 
    } 


} 
+0

У вас нет аварии? Вы пытались зарегистрировать то, что находится в newPosts, когда вы находитесь в 'cellForRowAt indexPath'? –

+0

У меня нет сбоев, и я записал newPosts, и он ничего не показывал, как будто он не добирался туда. – SimpiMind

+0

делает эту строку 'print (type)' регистрировать нужные объекты? –

ответ

0

Вы должны проверить, если ваш TableView инициализируется, когда, прежде чем перезагружать данные:

+0

По-прежнему те же проблемы, не отображающие данные, кажется, что NewsPosts не получает пропуск цикла foreach – SimpiMind

0

Я думаю, проблема в том, когда вы вызываете функцию gettingNewPost. Функция reloadData() вызывается сразу после didLoad, возможно, вы даже не получите данные, когда вы вызываете функцию для заполнения таблицы. Вы пытались войти в функцию cellForRow, чтобы узнать, не пытается ли он получить доступ к массиву nil?

+0

Его доступ к файлу nil Array – SimpiMind

+0

Итак, вы должны вызвать reload data() после запроса alamofire – Hackbarth

+0

Я сделал это уже, но пока еще ничего не отображается – SimpiMind

0

я наконец-то нашел этот вопрос, один из телохранителей является возвращение ноль, так что остановить выполнение других, поэтому я изменен с защитного устройства на нижнее

Смежные вопросы