我有这些代码,从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:
族方法比较字符串内容
参考。