NSFetchedResultsController вставляет одну и ту же ячейку в две секции, только когда контроллер собирается вставить другую секцию

Это моеMessage.swift файл:

@objc(Message)
class Message: NSManagedObject {

    @NSManaged var content: String
    @NSManaged var createdAt: NSDate
    @NSManaged var identifier: Int64

    @NSManaged var conversation: Conversation

    @NSManaged var sender: Contributor

    var normalizedCreatedAt: NSDate {
        return createdAt.dateWithDayMonthAndYearComponents()!
    }
}

Вот как я настроил свой FRC:

private func setupFetchedResultsController() {

    let context = NSManagedObjectContext.MR_defaultContext()
    let fetchRequest = NSFetchRequest(entityName: "Message")
    let createdAtDescriptor = NSSortDescriptor(key: "createdAt", ascending: true)

    fetchRequest.predicate = NSPredicate(format: "conversation.identifier = %lld", conversation.identifier)
    fetchRequest.sortDescriptors = [createdAtDescriptor]

    fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: "normalizedCreatedAt", cacheName: nil)
    fetchedResultsController.delegate = self

    try! fetchedResultsController.performFetch()
    tableView.reloadData()
}

со своим стандартным делегатом.

НаviewDidLoad мой контроллер имеет 1 секцию с 1 строкой. Я печатаю его на консоли, используя следующую функцию:

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

    print("--->>>")
    print(section)
    print(fetchedResultsController.sections![section].objects!.count)
    return fetchedResultsController.sections![section].objects!.count
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return fetchedResultsController?.sections?.count ?? 0
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let message = fetchedResultsController?.objectAtIndexPath(indexPath) as! Message
    let cellIdentifier = message.sender.identifier == Settings.currentUser?.profile?.identifier ? SentTableViewCellIdentifier : ReceivedTableViewCellIdentifier
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! TableViewCell

    cell.cellTitleLabel?.text = message.content

    return cell
}

и вывод следующий:

--->>>
0
1

Как только я пытаюсь добавить еще одно сообщение с другим разделом, я получаю следующее:

--->>>
0
2
--->>>
1
1

а потом ошибка:

CoreData: ошибка: серьезная ошибка приложения. Исключение было получено от делегата NSFetchedResultsController во время вызова -controllerDidChangeContent :. Неверное обновление: недопустимое количество строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (2), должно быть равно количеству строк, содержащихся в этом разделе до обновления (1), плюс или минус число из строк, вставленных или удаленных из этого раздела (0 вставлено, 0 удалено) и плюс или минус количество строк, перемещенных в или из этого раздела (0 перемещено, 0 перемещено). с userInfo (ноль)

Почему так происходит?

NSFetchedResultsController по какой-то причине загружает одну и ту же ячейку в две секции:первый а такжевторой, Зачем?

НОТА:

Проблема возникает ТОЛЬКО когда FRC вставляет новый раздел. Если нужно вставить строку в существующий раздел, проблем нет. Проблема сильно связана с разделами.Проблема только тогда, когда FRC пытается вставить второй раздел. Когда речь идет о третьем или четвертом разделе, нет никаких проблем.

Ответы на вопрос(2)

Ваш ответ на вопрос