Iphone 从Sqlite数据库访问布尔值

Iphone 从Sqlite数据库访问布尔值,iphone,ios,objective-c,sqlite,Iphone,Ios,Objective C,Sqlite,我使用以下查询将一列新添加到我的一个数据库表中 alter table 'user' add column 'IsMarried' BOOL default 'false'; 数据库更新完成后,用户“jhon”在数据库中的婚姻状态为“true” 然后我使用Objective C编写了一个sql查询,检索jhon的已婚状态,如下所示 BOOL married = [results boolForColumn:@"IsMarried"]; 我的问题是布尔变量“已婚”总是返回false 然后,我在

我使用以下查询将一列新添加到我的一个数据库表中

alter table 'user' add column 'IsMarried' BOOL default 'false';
数据库更新完成后,用户“jhon”在数据库中的婚姻状态为“true”

然后我使用Objective C编写了一个sql查询,检索jhon的已婚状态,如下所示

BOOL married = [results boolForColumn:@"IsMarried"];
我的问题是布尔变量“已婚”总是返回false

然后,我在代码中添加以下行以检查是否正确

NSString *strMarried = [results stringForColumn:@"IsPwdProtected"];
然后strMarried为jhon返回“true”。有人能告诉我如何使用
boolForColumn方法“false”和“true”是字符串。

BOOL在SQLite中不受支持,必须使用整数(0和1)分别表示false和true。更多信息请点击此处:

我目前不在Mac电脑前,所以我无法测试这一点,但我想以下内容将满足您的需求:

alter table 'user' add column 'IsMarried' INTEGER default 0;
如果您随后将用户“jhon”更新为已婚状态为1,我怀疑您对
boolForColumn
的调用将返回true

SQLite没有单独的布尔存储类。相反 布尔值存储为整数0(false)和1(true)

所以你可以使用下面的代码

NSString *boolString = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];

BOOL married = [boolString boolValue];

您正在将SQL文本块转换为数字,并测试布尔值。使用数字(0为假,1为真)在标准sqlite3框架中没有类似于
stringForColumn
的方法。