Имеет ли смысл хранить список с плавающей точкой в ​​BLOB-объекте или в тексте в SQL Lite? - PullRequest
0 голосов
/ 23 февраля 2012

Я довольно новичок в разработке для iPhone - поэтому извиняюсь, если это глупый вопрос;)

У меня есть куча данных для отображения предварительно рассчитанных отношений между значениями

например.

Отображение входа света на выходной мощности для солнечной панели.

Одна шкала является фиксированной и может быть легко рассчитана (т.е. она увеличивается с шагом 0,1 и имеет известную начальную и конечную точку)

0,0 - 80,0

Другая шкала определяется некоторыми данными, имеющимися у меня в текстовом формате:

9,80293622028191E + 0000, 9,82985159414126E + 0000, 9,85682155471754E + 0000, 9,88384617060865E + 0000, 9,91092551045114E + 0000, 9,93805964292038E + 0000, 9,96524863690395 + 0, + 0, 0 + 100%, + 100, 9,93805964292038E + 0000, 9,965246, 001, 0, 4800, E-mail +0001, 1.00745546010324E + 0001 и т. Д.

Я могу использовать это на телефоне для построения линий для различных переменных.

Общий объем данных в текстовом формате составляет около 4 МБ (около 32 КБ на строку данных)

Вопрос в том, как лучше хранить этот массив значений с плавающей запятой, чтобы я мог легко его обновить, а также легко загрузить его для отображения?

Мне никогда не нужно выделять из него одно значение - мне всегда нужен весь список для данной строки - поэтому, кажется, имеет смысл хранить его как один объект данных. Я могу сохранить его в виде текста в файл, а затем перезаписать файл, когда я хочу его обновить. Однако - мне понадобится база данных SQL lite для других данных, и это кажется более разумным для хранения данных.

Использование типа данных с плавающей точкой в ​​SQL представляется довольно сложным способом - так как я всегда буду хотеть полный набор значений для строки, поэтому каждый выбор будет объединением и (мне придется хранить информация о заказе, чтобы я мог вернуть их в нужном порядке)

Имеет ли смысл помещать весь массив в строку и сохранять его как текст? Или есть приличный способ сериализации NSArray в поле BLOB-объектов и его реконструкции позже?

----- EDIT ----------

Оказывается, что несколько тысяч строк с плавающей точкой в ​​базе данных SQLite ужасно медленно работают на самом телефоне. Это нормально в симуляторе, но может занять около 20 секунд, чтобы загрузить на телефоне. Чтобы обойти это, я поместил эти данные в простые текстовые файлы и преобразовал их в числа с плавающей точкой при загрузке в NSArray.

1 Ответ

1 голос
/ 23 февраля 2012

Вы можете сериализовать / десериализовать вызовы вашего массива:

- (NSArray *)componentsSeparatedByString:(NSString *)separator;

и

- (NSString *)componentsJoinedByString:(NSString *)separator;

Однако я бы рекомендовал либо

1) сохранить ваш массив вфайл (writeToFile, arrayWithContentsOfFile)

или лучше

2), записывающий их в существующее значение базы данных SQLite по значению.Если я вас правильно понял, вам не нужны никакие соединения.Просто получите ваши значения, используя:

SELECT y FROM data LIMIT start_value, end_value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...