Я решаю эту проблему, читая, что нужно ячейке таблицы из моей базы данных в массив источника данных, из всех существующих записей базы данных. Однако объекты не удаляются из массива, они остаются там, если их не нужно удалять.
Например, одно из моих приложений читает 1700 строк, для каждой строки создает объект, назначает NSUInteger (значение автоинкремента) и NSString (имя объекта, которое будет отображаться в ячейке) и помещает их в массив источника данных. Весь этот процесс занимает всего около 200-300 миллисекунд - вам придется проверить, не слишком ли много времени для 10 000 записей, но для нескольких тысяч записей было бы хорошо просто прочитать все это. Я помню, что потребление памяти также довольно низкое, не могу посмотреть, сколько именно банкомата.
Затем, когда пользователь нажимает на строку, я запрашиваю массив источника данных, чтобы найти объект, который он только что нажал, и этот объект затем загружает все свои другие значения из базы данных, что он может сделать, так как он знает свой собственный ключ базы данных / id (сам "гидратирует")
Для полноты (используя FMDB ):
NSResultSet *res = [db executeQuery:@"SELECT my_key, my_name FROM table"];
while ([res next]) {
NSDictionary *dict = [res resultDict];
MyObj *obj = [MyObj obj];
obj.id = [dict objectForKey:@"my_key"];
obj.name = [dict objectForKey:@"my_name"];
[datasourceArray addObject:obj];
}