2013-10-07 2 views
0

Вот пример моего CSVXcode: получение одной строки Xcode на основе поискового запроса

10820 0 0 0 0 
10900 2 4 4 4 
11000 21 50 54 58 
11100 23 54 59 63 
11200 25 59 63 68 
11300 27 63 68 73 
11400 29 68 73 78 
11500 31 72 78 83 
11600 32 76 82 88 
11700 34 81 87 93 

Я ищу, чтобы создать использовать Xcode, чтобы извлечь одну строку кода из этого очень длинного CSV на основе первая строка.

Например:

  1. если пользователь вводит "10900", то второй столбцы строки будут возвращены.
  2. Если пользователь возвращает 11650, столбцы строки 11600 будут возвращены ... всегда беру нижнюю строку, когда входное значение меньше следующей строки.

Любая помощь будет оценена по достоинству. Я видел, что код разбирает весь CSV-файл, но я думаю, что это может быть большой утечкой памяти, прямо сейчас мой CSV имеет 2000 строк значений, которые все в порядке возрастания основаны на первом столбце.

ответ

0

Вы должны загрузить файл в память так или иначе, чтобы найти правильное значение.

С таким большим CSV-файлом я бы рекомендовал превратить CSV-файл в двоичный файл (например, файл plist) и поместить его в двоичный код в ваше приложение - вместо того, чтобы разбирать его каждый раз в RunTime. Он имеет гораздо лучшую производительность, и с этим легче работать, поскольку вы работаете напрямую с NSDictonaries NSArrays.

Если вы не хотите, чтобы сделать это по какой-то причине, следующее решение использовать что-то вроде CHCSVParser: https://github.com/davedelong/CHCSVParser

Это обеспечивает оптимизацию для загрузки только часть файла в то время, - что оптимизация вы можете искать.

Смежные вопросы