2011-01-08 13 views
1

Ich möchte den Rückgabewert von mapView.userLocation.location.coordinate.longitude in meine SQLite3-Datenbank einfügen. Ich bin mir seiner Art nicht sicher. Ich kann es auf diese Weise nicht tun:Saving mapView.userLocation.location.coordinate.longitude in sqlite-Datenbank

sqlite3_bind_text(stmt, 1, [mapView.userLocation.location.coordinate.longitude floatValue], -1, nil); 

Es gibt Fehler „Kann nicht auf einen Zeiger Typ umwandeln“, weil Länge nicht schwimmen, ich denke.

Der Feldtyp ist FLOAT in der Datenbanktabelle. Wie kann ich den Wert von Longitude in Float umwandeln, was auch immer es ist?

Vielen Dank.

+0

Verwenden [FMDB] (http://github.com/ccgus/fmdb). –

+2

Für zukünftige Referenz @ozancali, können Sie einfach den Optionsschlüssel gedrückt halten und doppelklicken Sie auf eine Eigenschaft/Variable und es wird Ihnen sagen, welcher Typ es ist und eine direkte Verknüpfung zu der Dokumentation und Beispielcode dafür bereitstellen. Wenn Sie stattdessen die Befehlstaste gedrückt halten und doppelt klicken, gelangen Sie direkt zur Header-Definition der Eigenschaft/Variable. –

+0

Das hat mir wirklich geholfen Jack, vielen Dank. Ich bin ziemlich neu in der IDE und der Sprache und habe sehr begrenzte Zeit, so dass ich nicht die Zeit habe, die Dokumentation und sogar einige Grundlagen zu überprüfen. Noch eine Frage, gibt es so etwas wie Quick Watch-Eigenschaft von Visual Studio, mit der ich während der Laufzeit Werte überprüfen kann? – bileyazan

Antwort

4

Die Dokumentation für MKUserLocation zeigt, dass die Location-Eigenschaft vom Typ CLLocation ist. Die Dokumentation für CLLocation zeigt, dass die Koordinateneigenschaft vom Typ CLLocationCoordinate2D ist.

Die Core Location Data Types Reference zeigt, dass CLLocationCoordinate2D eine Struktur ist, die Breite und Länge enthält, von denen jede vom Typ CLLocationDegrees ist.

Auf der gleichen Seite wird CLLocationDegrees nur als anderer Name für double angezeigt. Breiten- und Längengrad sind also vom Typ double.

Statt sqlite3_bind_text zu verwenden, verwenden sqlite3_bind_double:

sqlite3_bind_double(stmt, 1, mapView.userLocation.location.coordinate.longitude); 

und den Wert zu laden, würden Sie so etwas wie verwenden:

double longitude = sqlite3_column_double(stmt, column_index_here); 
+0

Ja, das hat geholfen, danke. Ich hätte die sqlite Methoden überprüfen sollen, hatte aber keine Zeit so direkt hier gefragt, tut mir leid. – bileyazan