1

我有一个 SQLite 数据库,其中包含一些 double 类型的字段,我必须提取此值并将它们放入实例变量中,但出现此错误

  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 回答