在我的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。见截图
全表定义:
答案 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选择查询中选择这些字段。一切正常。