在sqlite语句中绑定NSInteger

时间:2015-01-13 15:06:45

标签: ios objective-c sqlite

以下声明正在发出警告:Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int'

sqlite3_bind_int(statement, 1, obj.extId);

此处obj.extId的类型为NSInteger。我无法将其保留为int,因为extID可能包含很长的数字。

如何删除此警告?我需要做什么铸造?我可以使用sqlite3_bind_int吗?

而不是sqlite3_bind_int64

1 个答案:

答案 0 :(得分:3)

将其投放到int

sqlite3_bind_int(statement, 1, (int)obj.extId);

或使用int64绑定功能:

sqlite3_bind_int64(statement, 1, obj.extId);

问题是如果你为32位和64位构建,那么NSInteger的大小将根据你正在构建的内容而改变。我认为第一种方法是最好的,如果你知道整数不会超过32位,如果你知道它可以超过32位,那么使用int64_t代替NSInteger并使用第二种方法