2015-10-26 5 views
0

Я пытаюсь реализовать IOS Table View в Swift, который делает следующее:Swift: Заполнение numberOfSectionsInTableView и numberOfRowsInSection динамически

  • Формирует количество секций путем подсчета количества объектов, в настоящее время хранится в моей сущности Core Data
  • Создать одну строку для каждой секции, каждая строка, представляющая/удержание объекта в моей сущности Core Data

Пожалуйста, простите лоскутной код, он нуждается в уборке.

Вот моя функция для установки количества разделов. Он просто возвращает количество полученных результатов и предоставляет это как мое количество разделов. Отлично.

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    let count = self.fetchedResultsController.fetchedObjects?.count 
    if (count != 0){ 
    return count!  } 
    else { 
    return 0 
    } 
} 

Однако я не знаю, как адаптировать базовый метод numberOfRowsInSection, включенный в файл проекта. Он запускает исключение NSRangeException для массива, выходящего за рамки 0. Я предполагаю, что это массив [section].

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

    let sectionInfo = self.fetchedResultsController.sections![section] 
     return sectionInfo.numberOfObjects 

} 

Просто возвращение 1, для одной строки в секции, которая является то, что я хочу, не работает, падает на ту же ошибку выше.

Может ли какой-нибудь кодер указать мне в правильном направлении.

Спасибо!

Edit: Ошибка происходит здесь, когда я вернусь любое numberOfSectionsInTableView больше 1.

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

    let sectionInfo = self.fetchedResultsController.sections![section] 
    return sectionInfo.numberOfObjects 

} 
+0

Почему бы вам не вернуться просто к одному в вашем tableView (tableView: UITableView, numberOfRowsInSection: Int) '? –

+0

Я пробовал это, но я получил следующее исключение: 2015-10-26 16: 35: 01.842 * имя приложения * [9504: 2278828] *** Завершение приложения из-за неперехваченного исключения «NSRangeException», причина: '** * - [__ NSArrayM objectAtIndex:]: индекс 1 за пределами границ [0 .. 0] ' – CodeKnight

+0

, так что у вас есть проблема в некоторых местах, пожалуйста, напишите код вашего контроллера табличного представления –

ответ

2
override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return self.fetchedResultsController.sections!.count 
} 

Здесь вы возвращаете количество секций, а не количество строк.

+2

Этот ответ неверен. Должно быть 'return self.fetchedResultsController.sections! .count' – Adrian

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