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