Проблема, с которой я сталкиваюсь, заключается в следующем:
У меня есть UITableView
, который я загружаю данными из NSFetchedResultsController
, который извлекает около 6000 строк из основных данных.fetchBatchSize
из NSFetchRequest
установлено в 20, и если я не применяю NSSortDescriptor
, выборка будет достаточно быстрой, чтобы не блокировать поток пользовательского интерфейса.
Однако мне нужно отобразить эти строкиотсортировано в алфавитном порядке, для которого я использую следующий NSSortDescriptor:
[[[NSSortDescriptor alloc] initWithKey:@"optionText" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
И вот, когда все меняется, операция извлечения теперь занимает около 3 секунд, потому что сортируется 6000 строк.Очевидно, что в течение этих секунд пользовательский интерфейс блокируется, и пользовательский интерфейс ужасен.
Я знаю, что могу выполнить выборку в фоновом потоке, а затем передать идентификаторы объектов в основной поток, но в этом случае как можноЯ все еще использую NSFetchedResultsController
в основном потоке (я также использую его для наблюдения за изменениями в данных)?
У меня также есть indexed
атрибут, по которому я сортирую, но это только оптимизирует внешний вид.ups и не сортировка производительности.
Любые идеи будут высоко оценены, спасибо!