iPhone 3.0 Compass: Como obter um título?
-
20-08-2019 - |
Pergunta
Sou relativamente novo para o Objective-C e ainda não sei muito sobre isso, então peço desculpas pelo que provavelmente é uma pergunta realmente amadora.
Estou tentando obter o cabeçalho magnético da linha de linha e a diretoria de Cllocation. No entanto, estou recebendo erros de compilação para esta linha de código:
locationLabel.text = [[[location course] magneticHeading] stringValue];
Os erros são:
warning: invalid receiver type 'CLLocationDirection'
error: cannot convert to a pointer type
Eu realmente não entendo o que estou fazendo de errado aqui. Por favor ajude!
Solução
Aqui estão as etapas necessárias para usar a bússola.
1) Verifique a disponibilidade: se o headingAvailable
A propriedade do gerente de localização é sim, então você pode usar a bússola.
2) Use o método do gerenciador de localização -(void) startUpdatingHeading
Para começar a receber as informações que você está procurando
3) Na verdade, recupere essas informações usando o método delegado (não se esqueça de se definir como o delegado)
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
Espero que isto ajude.
Outras dicas
O magneticeading é do tipo cllocationDirection, que é simplesmente um typedef para o tipo de dados primitivo "duplo". No seu exemplo, você está tentando enviar uma mensagem para algo que não é um objeto! Você deve simplesmente formatar o duplo como assim:
locationLabel.text = [NSString stringWithFormat:@"Heading %.3f", [[location course] magneticHeading]];
Como você está alocando e inicializando location
? Certificar-se de que location
é definido como um (CLLocationDirection *)
E não apenas um (CLLocationDirection)
.