2009-06-25 11 views
6

Jestem względnie nowy w Objective-C i nie wiem jeszcze na ten temat, więc przepraszam za to, co prawdopodobnie jest naprawdę amatorskie.iPhone 3.0 Compass: jak uzyskać nagłówek?

Próbuję uzyskać nagłówek magnetyczny od CLHeading i CLLocationDirection. Jednak Dostaję błędy kompilacji dla tej linii kodu:

locationLabel.text = [[[location course] magneticHeading] stringValue]; 

Błędy są:

warning: invalid receiver type 'CLLocationDirection' 
error: cannot convert to a pointer type 

I naprawdę nie rozumiem, co robię źle tutaj. Proszę pomóż!

Odpowiedz

14

Oto kroki potrzebne do korzystania z kompasu.

1) sprawdź dostępność: jeśli właściwość headingAvailable menedżera lokalizacji to TAK, możesz użyć kompasu.

2) stosujemy metodę menedżera lokalizacja -(void) startUpdatingHeading zacząć otrzymania informacji, którego szukasz

3) rzeczywiście odzyskać tę informację za pomocą metody delegata (nie zapomnij, aby ustawić siebie jako delegata)

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading 

Mam nadzieję, że to pomoże.

+1

przez wzgląd na Google: Nieruchomość headingAvailable została zaniechana od iO4. Istnieje teraz metoda klasy nagłówkowejAvailable, która zwraca wartość logiczną. – Raj

+6

Geniuszu, czy umiesz przeczytać tytuł? –

1

W jaki sposób przydzielasz i inicjujesz location? Upewnij się, że location jest zdefiniowany jako (CLLocationDirection *), a nie tylko (CLLocationDirection).

3

magneticHeading ma typ CLLocationDirection, który jest po prostu typedef dla pierwotnego typu danych "double". W twoim przykładzie próbujesz wysłać wiadomość do czegoś, co nie jest obiektem! Należy po prostu sformatować podwójnej tak:

locationLabel.text = [NSString stringWithFormat:@"Heading %.3f", [[location course] magneticHeading]];

+0

Dzięki, to było miejsce, w którym byłem naprawdę zdezorientowany. Muszę się dowiedzieć więcej o typedefs. –

Powiązane problemy