在 sqlite 语句中绑定 NSInteger
binding NSInteger in sqlite statement
以下语句引发警告:Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int'
sqlite3_bind_int(statement, 1, obj.extId);
这里obj.extId
是NSInteger类型。我不能将其保留为 int
,因为 extID
可能包含很长的数字。
如何删除此警告?我需要做什么铸造?我可以使用 sqlite3_bind_int64
而不是 sqlite3_bind_int
吗?
投射到 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
并使用第二种方法.
以下语句引发警告:Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int'
sqlite3_bind_int(statement, 1, obj.extId);
这里obj.extId
是NSInteger类型。我不能将其保留为 int
,因为 extID
可能包含很长的数字。
如何删除此警告?我需要做什么铸造?我可以使用 sqlite3_bind_int64
而不是 sqlite3_bind_int
吗?
投射到 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
并使用第二种方法.