2015-01-13 2 views
0

다음 문에 NSInteger를 바인딩 경고를 던지고있다. extID에 매우 긴 숫자가 포함되어있을 가능성이 있기 때문에 이것을 int으로 유지할 수 없습니다.SQLite는 문

이 경고는 어떻게 제거합니까? 어떤 주조를해야합니까? sqlite3_bind_int 대신 sqlite3_bind_int64 사용자를 사용할 수 있습니까? int

답변

2

캐스트를 :

sqlite3_bind_int(statement, 1, (int)obj.extId); 

또는 int64 바인드 함수를 사용

sqlite3_bind_int64(statement, 1, obj.extId); 

문제는 당신이 모두 구축 32 비트 및 NSInteger의 64 비트 다음 크기 경우 당신이 만들고있는 것에 따라 바뀔 것입니다. 정수가 32 비트를 넘지 않는다는 것을 안다면 32 비트를 넘을 수 있다는 것을 안다면 NSInteger 대신 int64_t을 사용하고 두 번째 방법을 사용하면 가장 좋은 방법이라고 생각합니다.

+0

int 형으로 타입 변환하면 데이터가 손실 될 수 있습니다. !! 나는 그런 일이 일어나지 않는다 ..! – Shradha

+0

@Shradha OK가 내 대답을 업데이트했습니다. 나는'int64_t'를 사용하는 것이 값이 32 비트를 넘을 것이라고 생각한다면 최선이라고 생각합니다. – Droppy

+0

문제는 정수가 32 비트를 초과하여 int로 변환 할 수 없다는 것입니다. – Shradha