使用NSNumber的SQLLite查询WHERE在处理params时出现BAD_ACCESS错误

Tom*_*Dev 1 sqlite objective-c nsnumber ios

我在为我的iOS应用程序插入一个int到SQLite数据库时遇到问题.当我选择它时,它总是为零.

我正在创建这个表:

CREATE TABLE followedCategory(id TEXT(256) primary key, title TEXT(256), img BLOB, following INTEGER)
Run Code Online (Sandbox Code Playgroud)

最后一个param(following)导致了问题.我用这段代码插入记录:

DatabaseRecord *rec = [database query:@"INSERT INTO followedCategory VALUES (?1, ?2, ?3, ?4)" params:category.categoryId, category.title, UIImagePNGRepresentation(category.image), [NSNumber numberWithInt:1], nil];
[rec next];
Run Code Online (Sandbox Code Playgroud)

当我用这个查询表时:

DatabaseRecord *rec = [database query:@"SELECT COUNT(*) FROM followedCategory WHERE following = ?1" params:[NSNumber numberWithInt:1], nil];
[rec next];

return [rec intAtCol:0];
Run Code Online (Sandbox Code Playgroud)

我总是得到零结果.当我运行这个:

DatabaseRecord *recTest = [database query:@"SELECT following FROM followedCategory LIMIT 2"];
[recTest next];
NSLog(@"First following is %i", [recTest intAtCol:0]);
[recTest next];
NSLog(@"Second following is %i", [recTest intAtCol:1]);
Run Code Online (Sandbox Code Playgroud)

我在日志中找到了这个:

2014-01-29 10:24:58.595 App[1940:60b] First following is 0
2014-01-29 10:24:58.596 App[1940:60b] Second following is 0
Run Code Online (Sandbox Code Playgroud)

我猜插入查询导致问题,但我无法弄清楚为什么.顺便说一句,我使用的是NSNumber因为Database类将它转换为int,不能将int传递给DatabaseRecord.

有人建议吗?提前致谢!

Vel*_*n S 5

我认为插入BLOB可能会导致错误.只需参考以下链接可能对您有所帮助. sqlite3在数据库中插入并读取BLOB数据