iPhone 3.0 Compass: comment obtenir un titre?
-
20-08-2019 - |
Question
Je suis relativement nouveau dans Objective-C et je n'y connais pas grand-chose à ce jour. Je m'excuse donc pour cette question qui est probablement très amateur.
J'essaie d'obtenir le cap magnétique de CLHeading et CLLocationDirection. Cependant, je reçois des erreurs de compilation pour cette ligne de code:
locationLabel.text = [[[location course] magneticHeading] stringValue];
Les erreurs sont les suivantes:
warning: invalid receiver type 'CLLocationDirection'
error: cannot convert to a pointer type
Je ne comprends pas vraiment ce que je fais mal ici. S'il vous plaît, aidez!
La solution
Voici les étapes à suivre pour utiliser la boussole.
1) vérifiez la disponibilité: si la propriété headingAvailable
du gestionnaire de lieux est OUI, vous pouvez utiliser le compas.
2) utilisez la méthode du gestionnaire d'emplacement - (void) startUpdatingHeading
pour commencer à recevoir les informations recherchées
3) récupérez réellement ces informations en utilisant la méthode déléguée (n'oubliez pas de vous définir en tant que délégué)
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
J'espère que cela vous aidera.
Autres conseils
magneticHeading est de type CLLocationDirection, qui est simplement une référence typée pour le type de données primitif "double". Dans votre exemple, vous essayez d'envoyer un message à quelque chose qui n'est pas un objet! Vous devriez simplement formater le double comme suit:
locationLabel.text = [NSString stringWithFormat: @ "Heading% .3f", [[location course] magneticHeading]];
Comment allouez-vous et initialisez-vous emplacement
? Assurez-vous que emplacement
est défini en tant que (CLLocationDirection *)
et pas simplement un (CLLocationDirection)
.