В данном контексте это не апостроф, а одиночная кавычка, которую компилятор увидит как разделитель строки. Поскольку вы строите строку для отправки в SQL, неэкранированная одинарная кавычка разрушит строку, в которой она возникает.
Вы всегда должны экранировать одинарные и двойные кавычки в любом строковом контексте. Это относится ко всем языкам, а не только к Си.
Черт, если вы используете синтаксическую раскраску, редактор обычно покажет вам, что вы превратили большую часть вашего кода в неопределенную строку.
Edit:
Хорошо, я неправильно понял. В общем, для форматирования ввода из пользовательского интерфейса вы должны использовать подкласс NSFormatter . Это в основном позволяет вам превращать что-либо в строку и обратно. Он чаще всего используется для дат, чисел, форматированных строк, таких как phone # и т. Д., Но он может выполнять любые преобразования или манипуляции со строками. В этом случае вам понадобится средство форматирования для автоматического экранирования одинарных кавычек в вводимых пользователем строках. Кто-то, возможно, уже написал один.
Но я должен сказать, что не думаю, что это проблема, потому что:
- NSString очень хорош в обработке кавычек. Вы можете даже взять UTF8String с одиночными галочками и выбросить ее прямо через printf, которая, как известно, суетлива в таких вещах. Я не уверен, что проблема в Objective-C - это проблема.
- Я не нашел других упоминаний об этой проблеме. SQL широко используется на iPhone и на Mac, и если API Apple не справится с очень распространенным шаблоном ввода, я ожидаю увидеть сотни публикаций о работе с кавычками в запросах SQL.
Я давно не разбирался с SQL, поэтому не могу точно сказать, в чем проблема, но я бы не стал фокусироваться на аспектах Objective-C.