1

double型のいくつかのフィールドを持つSQLiteデータベースがあり、この値を抽出してインスタンス変数に入れる必要がありますが、このエラーが発生します

  Assigning to 'double *' from incompatible type 'double'

これはコードです:

データベーステーブル.h

   @interface DatabaseTable : NSObject {
sqlite3 * database;

   }

   //........
   @property (nonatomic, assign)double *latitude; //latitude is a field of type double
   @property (nonatomic, assign)double *longitude; //longitude is a field of a type double

   @end

データベーステーブル.m

   //.....
    while (sqlite3_step(statement) == SQLITE_ROW) {

       DatabaseTable * rowTable =[[ChinaDatabaseTable alloc]init];
           //.......

           rowTable.latitude =sqlite3_column_double(statement, 15); //here the error
           rowTable.longitude =sqlite3_column_double(statement, 16);//here the error

           //.....
     }

私に何ができる?

4

1 に答える 1

13

*int、float、bool などのプリミティブ型の前に a を付ける必要はありません。

したがって、次のようにコードを変更します。

   @property (nonatomic, assign)double latitude; //latitude is a field of type double
   @property (nonatomic, assign)double longitude; //longitude is a field of a type double

ポインター変数を作成する必要がある場合、コードは問題ありません。

ただし、プリミティブ型のポインター値に値を直接割り当てることはできません。

アドレス値を割り当てる必要がある場合は、次のようにする必要があります。

double temp = sqlite3_column_double(statement, 15);
rowTable.latitude = &temp;
于 2012-11-05T08:19:36.050 に答える