Bussola iPhone 3.0: come ottenere un'intestazione?
-
20-08-2019 - |
Domanda
Sono relativamente nuovo di Objective-C e non ne so ancora molto, quindi mi scuso per quella che probabilmente è una domanda davvero amatoriale.
Sto cercando di ottenere la direzione magnetica da CLHeading e CLLocationDirection. Tuttavia sto ricevendo errori di compilazione per questa riga di codice:
locationLabel.text = [[[location course] magneticHeading] stringValue];
Gli errori sono:
warning: invalid receiver type 'CLLocationDirection'
error: cannot convert to a pointer type
Non capisco davvero cosa sto facendo di sbagliato qui. Per favore, aiutate!
Soluzione
Ecco i passaggi necessari per utilizzare la bussola.
1) verifica la disponibilità: se la proprietà headerAvailable
del gestore della posizione è SÌ, puoi utilizzare la bussola.
2) usa il metodo location manager - (void) startUpdatingHeading
per iniziare a ricevere le informazioni che stai cercando
3) effettivamente recuperare queste informazioni utilizzando il metodo delegato (non dimenticare di impostarti come delegato)
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
Spero che questo aiuti.
Altri suggerimenti
magneticHeading è di tipo CLLocationDirection, che è semplicemente un typedef per il tipo di dati primitivo "double". Nel tuo esempio stai provando a inviare un messaggio a qualcosa che non è un oggetto! Dovresti semplicemente formattare il doppio in questo modo:
locationLabel.text = [NSString stringWithFormat: @ " Heading% .3f " ;, [[course course] magneticHeading]];
Come stai allocando e inizializzando location
? Assicurati che location
sia definito come (CLLocationDirection *)
e non solo un (CLLocationDirection)
.