NSFetchedResultsController не меняет порядок UITableViewCellIOS

Программируем под IOS
Ответить
Anonymous
 NSFetchedResultsController не меняет порядок UITableViewCell

Сообщение Anonymous »

У меня есть 2 NSManagedObject, как показано ниже.

Код: Выделить всё

@interface Discussion : NSManagedObject
@property (nonatomic, retain) TMMessage *lastMessage;
@end

Код: Выделить всё

@interface TMMessage : NSManagedObject
@property (nonatomic, retain) NSDate * timeStamp;
@end
И NSSortDescriptor устанавливается следующим образом:

Код: Выделить всё

let sort = NSSortDescriptor(key: #keyPath(Discussion.lastMessage.timeStamp), ascending: false))
fetchRequest.sortDescriptors = [sort]
После вызова метода PerformFetch() все работает нормально. Он показывает все имеющиеся у меня объекты и обновляет последнее сообщение при появлении нового сообщения. Единственная проблема заключается в том, что при установке последнего сообщения порядок ячеек не обновляется.
Приведенный ниже метод делегата вызывается с типом == .update, не вводите == .move.

Код: Выделить всё

func controller(_ controller: NSFetchedResultsController,
didChange anObject: Any,
at indexPath: IndexPath?,
for type: NSFetchedResultsChangeType,
newIndexPath: IndexPath?) {
switch type {
case .insert:
guard let newIndexPath else { return }
tableView.insertRows(at: [newIndexPath], with: .fade)
case .delete:
guard let indexPath else { return }
tableView.deleteRows(at: [indexPath], with: .fade)
case .move:
guard let indexPath, let newIndexPath else { return }
tableView.moveRow(at: indexPath, to: newIndexPath)
case .update:
guard let indexPath else { return }
tableView.reloadRows(at: [indexPath], with: .automatic)
@unknown default:
break
}
}
Когда LastMessage обновляется, мне приходится снова вручную вызывать метод PerformFetch(), чтобы NSFetchedResultsController возвращал правильный порядок. Есть ли способ использовать метод делегата для обновления порядка ячеек?

Подробнее здесь: https://stackoverflow.com/questions/785 ... leviewcell
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»