Компас iPhone 3.0: как получить заголовок? - PullRequest
6 голосов
/ 25 июня 2009

Я относительно новичок в Objective-C и на самом деле пока ничего о нем не знаю, поэтому извиняюсь за, вероятно, действительно дилетантский вопрос.

Я пытаюсь получить магнитное направление от CLHeading и CLLocationDirection. Однако я получаю ошибки компиляции для этой строки кода:

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

Ошибки:

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

Я не очень понимаю, что я делаю здесь неправильно. Пожалуйста, помогите!

Ответы [ 3 ]

14 голосов
/ 25 июня 2009

Вот шаги, необходимые для использования компаса.

1) проверьте доступность: если свойство headingAvailable диспетчера местоположений имеет значение YES, вы можете использовать компас.

2) используйте метод менеджера местоположений -(void) startUpdatingHeading, чтобы начать получать информацию, которую вы ищете

3) фактически получить эту информацию, используя метод делегата (не забудьте указать себя в качестве делегата)

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

Надеюсь, это поможет.

3 голосов
/ 26 июня 2009

Magnetic имеет тип CLLocationDirection, который просто является typedef для примитивного типа данных "double". В вашем примере вы пытаетесь отправить сообщение чему-то, что не является объектом! Вы должны просто отформатировать дубль следующим образом:

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

1 голос
/ 25 июня 2009

Как вы распределяете и инициализируете location? Убедитесь, что location определен как (CLLocationDirection *), а не просто (CLLocationDirection).

...