그래서 나는 다음과 같이 내 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;
}
이걸로 누군가의 시간을 절약 할 수 있기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다