所以我试图用来自sqlite数据库的行填充对象,如下所示:
- (id) initWithSQLite:(sqlite3_stmt *)row andDatabase:(Database*)db
{
self.valueX = sqlite3_column_int(row, 0);
self.valueY = sqlite3_column_int(row, 1);
self.valueZ = sqlite3_column_int(row, 2);
//etc
return self;
}
由于数据库迁移后有很多属性,并且要添加更多属性,因此我尝试成为一个聪明的驴子,并将代码更改为:
- (id) initWithSQLite:(sqlite3_stmt *)row andDatabase:(Database*)db
{
int i = 0;
self.valueX = sqlite3_column_int(row, i);
self.valueY = sqlite3_column_int(row, i++);
self.valueZ = sqlite3_column_int(row, i++);
//etc
return self;
}
但是,这不起作用,但是如果我将其更改为
sqlite3_column_int(row, i+=1);
,它似乎确实起作用。所以我的问题是:
i++
和i += 1
有什么区别? 最佳答案
我想到了!
看来i++
首先返回i
的当前值,然后才将其加1。 i+=1
首先添加数字,然后才返回i
的值。因此,如果我只是将代码更改为此,则一切正常:
- (id) initWithSQLite:(sqlite3_stmt *)row andDatabase:(Database*)db
{
int i = 0;
//i++ instead of i, 0 is the returned value here and not 1 as I expected:
self.valueX = sqlite3_column_int(row, i++);
self.valueY = sqlite3_column_int(row, i++);
self.valueZ = sqlite3_column_int(row, i++);
//etc
return self;
}
我希望我可以为此节省一些时间
关于ios - int plus plus与int plus之间的差等于1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20398458/