我正在使用Xcode5在ios7上编码,编译器给我这个错误。
隐式转换会丢失整数精度
sqlite3_int64
又名long long
到int
。
下面的代码:
if([self chatId] != nil) {
[chatId release];
}
chatId = [[NSNumber alloc] initWithInt:sqlite3_last_insert_rowid(database)];
sqlite3_finalize(sqlStatement);
有什么帮助吗?
SQLite3 行 ID 是唯一的 64 位有符号整数。试试这个:
chatId = [[NSNumber alloc] initWithLongLong:sqlite3_last_insert_rowid(database)];
参见方法 sqlite3_last_insert_rowid 的实现,它返回一个 long long int 值,所以你需要
[NSNumber alloc] initWithLongLong: sqlite3_last_insert_rowid(database)];
SQLITE_API sqlite_int64 sqlite3_last_insert_rowid(sqlite3 *db){
return db->lastRowid;
}