Как сохранить текст в виде абзацев в базе данных sqlite в приложении для iPhone? - PullRequest
1 голос
/ 30 ноября 2010

В моем приложении для iPhone есть требование хранить огромное количество текста.

У меня есть абзацы текста, которые должны храниться в моей базе данных вместе с символами новой строки.

Что следуетЯ делаю, чтобы сохранить текст в виде абзацев в базе данных Sqlite?

Пожалуйста, помогите и предложите.

Спасибо

Например, , я хочу сохранить абзацыкак те, что приведены ниже:

(мать верных верующих). Начало Божественного Вдохновения для Апостола Аллаха было в форме добрых снов, которые сбылись, как яркий дневной свет, а затем любовь к уединениюбыл дарован ему.Он бывал в уединении в пещере Хира, где он поклонялся (одному Аллаху) непрерывно в течение многих дней, прежде чем он захотел увидеть свою семью.Раньше он брал с собой еду для отдыха, а затем возвращался к (своей жене) Хадидже, чтобы снова подобрать ему еду, пока внезапно Истина не сошла на него, пока он был в пещере Хира.Ангел пришел к нему и попросил его прочитать.Пророк ответил: «Я не знаю, как читать.

Пророк добавил:« Ангел поймал меня (сильно) и прижал ко мне так сильно, что я больше не мог этого вынести.Затем он отпустил меня и снова попросил прочитать, и я ответил: «Я не знаю, как читать».

В основном я хочу сохранить абзацы в базе данных в том же формате, что и возврат каретки

Ответы [ 5 ]

4 голосов
/ 30 ноября 2010

Это зависит от того, что вы подразумеваете под огромным и как вы планируете показывать данные.Поле SQLite TEXT по умолчанию может хранить 1 миллиард байтов.

Теоретически вы можете сохранить все это в поле TEXT в SQLite, а затем отобразить его в UIScrollView (или что бы вы ни использовали для визуализации) и проверить производительность, использование памяти и т. Д.

Если производительность неприемлема, вы можете попробовать «разбить» текст на несколько строк и отобразить только те записи текста, которые необходимы для пользовательского интерфейса.

См. Документ Ограничения SQLite :

Максимальная длина строки или BLOB

The maximum number of bytes in a string or BLOB in SQLite is defined by

макрос препроцессора SQLITE_MAX_LENGTH.Значение этого макроса по умолчанию составляет 1 миллиард (1 тысяча миллионов или 1 000 000 000).Вы можете увеличить или уменьшить это значение во время компиляции, используя параметр командной строки, например:

-DSQLITE_MAX_LENGTH=123456789
2 голосов
/ 30 ноября 2010

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

Однако проблема в том, почему вы храните большие объемы необработанного текста в SQLite? Если вы хотите выполнить поиск или организовать его каким-либо образом, SQLite (или Core Data), вероятно, не лучший выбор без предварительного массирования текста в какую-либо другую форму. Или, в качестве альтернативы, вы хотите сохранить необработанный текст на диске, а затем сохранить в базе данных какой-нибудь поисковый индекс.

0 голосов
/ 30 ноября 2010

я бы использовал HTML для представления своих абзацев (т.е.)

Сохранение текста

 <div>
 <p>(the mother of the faithful believers) The commencement of the Divine Inspiration to Allah's Apostle was in the form of good dreams which came true    like bright day light, and then the love of seclusion was bestowed upon him. He used to go in seclusion in the cave of Hira where he used to worship (Allah alone) continuously for many days before his desire to see his family. He used to take with him the journey food for the stay and then come back to (his wife) Khadija to take his food like-wise again till suddenly the Truth descended upon him while he was in the cave of Hira. The angel came to him and asked him to read. The Prophet replied, "I do not know how to read.</p>
 <p>The Prophet added, "The angel caught me (forcefully) and pressed me so hard that I could not bear it any more. He then released me and again asked me to read and I replied, 'I do not know how to read.</p>
</div>

Загрузка абзацев

Я бы загрузил их в UIWebView в виде HTML, вы можете сохранить HTML в файл в изолированной программной среде приложения, скажем, Paragraph1.HTML, загрузить его следующим образом:

// this is a user defined method
 -(void)loadDocument:(NSString*)documentName inView:(UIWebView*)webView
{
    NSURL *url = [NSURL fileURLWithPath:sFilePath];// Path of the HTML File
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
   [web loadRequest:request];
}

утилизируйте файл после загрузки, это сэкономит вам много времени и места. Удачи.

0 голосов
/ 30 ноября 2010

так что вы хотите разбить текст на абзац и сохранить каждый в отдельной строке, например:

(paragraph_number, text_of_paragraph)

, что будет:

create table paragraphs (paragraph_number, text_of_paragraph);

тогда на любом другом языке выиспользуйте разделить текст на список (pn, tp) с именем l и сделайте как:

executemany("insert into paragraphs values (?, ?)", l)

или сделайте как:

for p in l:
    execute("insert into paragraphs values (?, ?)", p)
0 голосов
/ 30 ноября 2010

Мое предложение будет, если вы хотите отобразить свой текст в веб-просмотре, а затем добавить HTML-теги к вашему тексту. Таким образом, вы можете добавить абзацы, новые строки и многие другие эффекты к вашему тексту.

Спасибо

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