来自SQLite的Bool值始终返回0

时间:2011-10-27 00:24:42

标签: iphone objective-c ios sqlite

在我的SQLite表中,我有一个列'hasSubCountries',它应该存储简单的0/1值cos SQLite doesn't has distinct boolean type

在挖掘stackoverflow时我发现this question,但它没有解决我的问题。

在我的数据库中,我有一栏:

hasSubCountries integer DEFAULT 0

已将一对子国家的值更改为1.

DBAccess类我尝试将值读入对象:

countryObj.hasSubCountries=(sqlite3_column_int(statement, 6) == 1);

在viewController代码中:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Country* country = [[self.countries objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]];

if(country.hasSubCountries==1)
    {

    SelectedCountry *selCountry=[[SelectedCountry alloc]initWithNibName:@"SelectedCountry" bundle:nil];
    [selCountry setTitle:@"Country"];
    [selCountry setCountryID:country.countryID];
    [self.navigationController pushViewController:selCountry animated:YES];
    [selCountry release];
    }
else
    {
    SubCountries *subCountries=[[SubCountries alloc]initWithNibName:@"SubCountries" bundle:nil];
    [subCountries setTitle:@"Sub"];
    [self.navigationController pushViewController:subCountries animated:YES];
    [subCountries release];
    }

NSLog(@"%d ... %d",country.hasSubCountries,country.countryID);
}

好吧,NSLog告诉我,无论如何我得到0,这就是'if'将我推到@“Sub”的原因。 我哪里出错?

我没有问题的国家的名称和ID。见截图

enter image description here

全表定义:

enter image description here

4 个答案:

答案 0 :(得分:0)

为什么不改变你的想法?

countryObj.hasSubCountries=(sqlite3_column_int(statement, 6) != 0);

答案 1 :(得分:0)

不是列索引7吗?

0 countryID
1个国家名称
2 relativeToContinent
3 countryFlag
4 hasRegionalIssues
5有不同的银行问题 6有问题 7 hasSubCountries

尝试:

countryObj.hasSubCountries=(sqlite3_column_int(statement, 7) == 1);

countryObj.hasSubCountries=(sqlite3_column_int(statement, 6) == 1);

答案 2 :(得分:0)

也许那些真的是字符串。使用sqlite3命令行程序打开数据库,然后尝试运行select hasSubCountries = 1 from countries。然后尝试select cast(hasSubCountries as integer) = 1 from countries

答案 3 :(得分:0)

对不起伙计们,

这是我的白痴(羞愧和隐藏的眼睛)。抱歉浪费你的时间。我只是忘了在我的SQLite选择查询中选择这些字段。一切正常。