Сравнение поля NSString с базой данных SQLite - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть эти коды, которые получают значение из базы данных SQLite и сравнивают его с NSString, объявленным в заголовочном файле.

Получение из базы данных:

NSString *sql = [[NSString alloc] initWithFormat:@"SELECT TESTONE, TESTTWO, TESTTHREE, TESTFOUR FROM STUDENTS WHERE NAME='%@'",Name];
sqlite3_stmt *statement;
if(sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil)== SQLITE_OK)
 {
    while(sqlite3_step(statement) == SQLITE_ROW){
        char *one = (char *) sqlite3_column_text(statement,0);
        tOne = [[NSString alloc] initWithUTF8String:one];
        char *two = (char *) sqlite3_column_text(statement,1);
        tTwo = [[NSString alloc] initWithUTF8String:two];
        char *three = (char *) sqlite3_column_text(statement,2);
        tThree = [[NSString alloc] initWithUTF8String:three];
        char *four = (char *) sqlite3_column_text(statement,3);
        tFour = [[NSString alloc] initWithUTF8String:four];
    }
 }  

Сравнение строки:

if(tOne == @"Yes")
{
    //blablabla
}
else if(tOne == @"No")
{
    //blablabla
}

Кажется, он вообще не входит в 'IF'.
Я дважды проверил поле в базе данных и его тип данных TEXT.
Я сделал UILabel для отображенияОдно значение, и оно показывает «Да».

Могу ли я знать, что или где не так во время сравнения?

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

Вы не можете сравнивать подобные строки, вы должны использовать isEqualToString:

if([tOne isEqualToString:@"Yes"])
{
    //blablabla
}
else if([tOne isEqualToString:@"No"])
{
    //blablabla
}
0 голосов
/ 17 ноября 2011

Вы сравниваете адрес объекта NSString, а не его содержимое.Используйте семейство методов compare: или isEqualToString: для сравнения содержимого строки.

Ссылка .

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