比较NSString和SQLite数据库字段



我有这些代码,从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来显示tOne值,它显示"Yes"。

我可以知道在比较过程中哪里出了问题吗?

不能这样比较字符串,只能用isEqualToString:

if([tOne isEqualToString:@"Yes"])
{
    //blablabla
}
else if([tOne isEqualToString:@"No"])
{
    //blablabla
}

当前比较的是NSString对象的地址,而不是其内容。使用compare:isEqualToString:族方法比较字符串内容

参考。

最新更新