Задача C: Ошибка утверждения при чтении данных из базы данных

Я использую функции, описанные ЗДЕСЬ для доступа к базе данных sqlite. У меня проблема с функцией:

-(NSArray *) найти: (NSString *) поле из: (NSString *) таблицы, где: (NSString *) условие.

Эта функция хорошо работает, когда условие равно нулю и когда условие представляет собой строку без какого-либо формата или метода; т.е. он работает хорошо, когда он является одним из следующих

NSArray *result = [[SQLiteManager singleton] find:@field1,field2 from:@tableName where:nil];

NSArray *result = [[SQLiteManager singleton] find:@field1,field2 from:@tableName, где:@field2=value];

Однако у меня есть условие, которое должно читаться из UITextField. Например

NSArray *result = [[SQLiteManager singleton] find:@field1,field2 from:@tableName, где:[NSString stringWithFormat:@field3=%@,[textFieldName text]]];

К сожалению, код ломается, когда я пытаюсь это сделать, что приводит к ошибке Assertion Failure. ПО ЛЮБОЙ причине? Любая помощь приветствуется.


person jpo    schedule 22.08.2012    source источник


Ответы (1)


По крайней мере, вы, вероятно, захотите поместить одинарные кавычки вокруг вашего %@. Нравится:

NSArray *result = [[SQLiteManager singleton] find:@"field1,field2"
 from:@"tableName" where:[NSString stringWithFormat:@"field3='%@'",
 [textFieldName text]]];

Но в дополнение к этому вы также можете захотеть экранировать строку.

person Michael Krelin - hacker    schedule 22.08.2012
comment
Большое Вам спасибо. Вот и получилось :) - person jpo; 22.08.2012