Предотвращение sqlite избежать обратной косой черты - PullRequest
2 голосов
/ 31 мая 2009

У меня есть столбец varchar в базе данных sqlite. Определенная строка текста имеет обратную косую черту, которая используется с «\ n» для возврата каретки в UITextView. Когда значение считывается из базы данных через SELECT:

myobject.text = [NSString stringWithUTF8String: (char *)sqlite3_column_text(selectstmt, 2)];

Обратная косая черта экранирована и выглядит как:

"\\n" rather than "\n"

, который не интерпретируется как возврат каретки. Если я добавлю две черные черты в тексте, вторая также будет экранирована и в конечном итоге приведет к исключению, когда текстовое представление добавляется как подпредставление:

Завершение работы приложения из-за необработанного исключения «NSUnknownKeyException», причина: «[setValue: forUndefinedKey:]: этот класс не совместим со значением кода для проверки ключа.

Есть ли способ предотвратить эти побеги, или мне нужно будет почистить его вручную?

1 Ответ

3 голосов
/ 31 мая 2009

Обратная косая черта, несомненно, прямо в тексте столбца - вы «видите» ее как удвоенную, потому что именно так отображается обратная косая черта (чтобы избежать путаницы с escape-последовательностями). sqlite - это не изменение текста, который вы помещаете туда при запросе, но, возможно, текст, который находится в базе данных, не тот, который вы хотите получить.

То, что вам нужно сделать, это заменить два символа backslash-n на один символ newline, и вы можете сделать это либо в базе данных (раз и навсегда, либо в каждом запросе) или в своей Код C (на каждый запрос) в зависимости от ваших потребностей.

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