2015-07-31 4 views
1

В настоящее время я использую iOS UIAutomation и идентифицирующие элементы со строкой, созданной из внешней базы данных, заполненной динамическими данными. Но iOS uiautomation выдает ошибку парсера, когда предикат строки содержит одиночную кавычку.iOS UiAutomation - Predicate with Single Quote in String

Пример:

UIATarget.localTarget().frontMostApp().mainWindow().collectionViews().firstWithPredicate(\"ANY visibleCells.name CONTAINS '" + title + "'") 

Обратите внимание, что если title = "Todds Apartment" этот локатор работает отлично. Но если строка содержит одиночную цитату, она выдает ошибку парсера. Так, например, если title = "Todd's Apartment" это не сработает.

Есть ли способ для оценки предиката в одинарных кавычках содержать одиночную кавычку?

+0

Побег одиночной цитаты? попробуйте использовать ' – Braains

+0

Спасибо. Проблема в том, что строка представляет собой переменную, поступающую из стороннего местоположения, которое передается локатору без моего знания того, что это такое, или если оно содержит одну цитату. Думаю, я всегда мог бы заменить на переменную. Что-то вроде title.replace ("'", "\'") –

+0

Это было мое следующее предложение. – Braains

ответ

0

Это действительно вопрос о дезинфекции входных данных - экранирование строк для включения в строку запроса.

Вы должны зарегистрироваться this question on escaping javascript strings for sql. Вероятно, вы можете решить свою проблему минимально, просто заменив \ на \\ и ' с \' в вашей строке ввода.

Apple's documentation on predicates, похоже, не предоставил никакой информации о том, какие символы могут быть экранированы.