I'm relatively new to Objective-C and really don't know much about it yet, so I apologise for what is probably a really amateurish question.
I'm trying to get the magnetic heading from CLHeading and CLLocationDirection. However I'm getting compile errors for this line of code:
locationLabel.text = [[[location course] magneticHeading] stringValue];
The errors are:
warning: invalid receiver type 'CLLocationDirection'
error: cannot convert to a pointer type
I don't really understand what I'm doing wrong here. Please help!
Here are the steps needed to use the compass.
1) check the availability: if the
headingAvailable
property of the location manager is YES, then you can use the compass.2) use the location manager method
-(void) startUpdatingHeading
to begin receiving the information you are searching for3) actually retrieve this information using the delegate method (do not forget to set yourself as the delegate)
Hope this helps.
How are you allocating and initializing
location
? Make surelocation
is defined as a(CLLocationDirection *)
and not just a(CLLocationDirection)
.magneticHeading is of CLLocationDirection type, which is simply a typedef for the primitive data type "double". In your example you are trying to send a message to something that is not an object ! You should simply format the double like so:
locationLabel.text = [NSString stringWithFormat:@"Heading %.3f", [[location course] magneticHeading]];