Не удается отобразить основные данные в tableview Swift

#ios #swift #swift3

#iOS #swift #swift3

Вопрос:

 class showPageViewController: UIViewController, UITableViewDelegate, UITableViewDataSource  
{

@IBOutlet weak var tableView: UITableView!
var records : [Record] = []

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

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return records.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    return cell
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath){
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

    if editingStyle == .delete{
        let record = records[indexPath.row]
        context.delete(record)
        (UIApplication.shared.delegate as! AppDelegate).saveContext()
        do{
            records = try context.fetch(Record.fetchRequest())
        } catch{
            print("Failed")
        }
    }


}

override func viewWillAppear(_ animated: Bool) {
    getData()
    tableView.reloadData()
}

func getData(){
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    do{
        records = try context.fetch(Record.fetchRequest())
    } catch{
        print("123")
    }
}


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}
  

Всем привет, я только что попытался отобразить основные данные в табличном представлении, я уже подключил dataSource и delegate к ViewController , и я подтвердил, что в core data есть некоторые данные, кто-нибудь может мне помочь, плз? Спасибо

Комментарии:

1. нет, я могу создать приложение и смоделировать его, но просто ничего не показывать

Ответ №1:

Две большие ошибки:

  1. Вы не можете создать ячейку с инициализатором по умолчанию UITableViewCell() вы должны удалить ее из очереди.
  2. Вы должны получить элемент в массиве источника данных для пути к индексу и присвоить значение свойства метке ячейки.

     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
        let record = records[indexPath.row]
        cell.textLabel!.text = record.<nameOfProperty>
        return cell
    }
      

cell это идентификатор, указанный в Interface Builder.
<nameOfProperty> это свойство вашей модели данных.