以下声明正在发出警告: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
答案 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
并使用第二种方法