私は、iOS6(または他のバージョン)用のxcode 4.5でspatialiteをコンパイルしようとしている私の正気の終わりにいます。実際には、 Build a static library for iOS - 具体的には、コンソールがすべて問題ないことを返すに基づく手法を使用してコンパイルすることができます が、次のようなクエリを実行すると
"select pk_uid from uk_highways order by GLength(geometry) limit 2" ステートメントは準備されません。
クエリ「select pk_uid from uk_highways limit 2」を実行すると、2 つの ID が返されます。つまり、空間関数が取り出されます。正常に動作します (そして、テーブルにジオメトリ列があります)。
私は今3日間頭をぶつけていて、本当に助けが必要です。言いたくないのですが、「ばかガイド」があれば必要だと思います。
編集:なぜこの最初のラウンドを含めなかったのかわかりません:
-(int)getStreetLength
{
int length;
NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"dhub_spatial" ofType:@"sqlite"];
sqlite3 *db;
if (sqlite3_open([databasePath UTF8String], &db) == SQLITE_OK)
{
NSLog(@"***** database opened ********");
spatialite_init(1);
char *sql = "SELECT pk_uid from united_kingdom_highways where pk_uid < 100 order by GLength(Geometry) limit 2;";
sqlite3_stmt *stmt;
if (sqlite3_prepare(db, sql, -1, &stmt, NULL) == SQLITE_OK)
{
NSLog(@"***** statement prepared ********");
while (sqlite3_step(stmt) == SQLITE_ROW)
{
NSLog(@"***** all the way throug to the while loop ********");
length = sqlite3_column_int(stmt, 0);
NSLog(@"the value of pkuid is %i",length);
}
}
else
{
NSLog(@"could not prepare statement: %s\n", sqlite3_errmsg(db)); //this returns no such function GLength
}
}
return length;
}