iPhone 3.0指南针:如何获取方向?

6

我对Objective-C还比较陌生,所以可能会提出一些很业余的问题,敬请谅解。

我正在尝试从CLHeading和CLLocationDirection获取磁头方向。但是我在这行代码中遇到了编译错误:

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

错误信息如下:
warning: invalid receiver type 'CLLocationDirection'  
error: cannot convert to a pointer type

我不太明白我在这里做错了什么,请帮忙!

3个回答

14

以下是使用指南针的步骤。

1)检查可用性:如果位置管理器的headingAvailable属性为YES,则可以使用指南针。

2)使用位置管理器方法-(void) startUpdatingHeading 开始接收所需信息。

3)使用委托方法实际检索此信息(不要忘记将自己设置为委托)。

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

希望这能帮到你。


1
自iOS4起,headingAvailable属性已被弃用。现在有一个headingAvailable类方法,返回一个布尔值。 - Raj

3

magneticHeading是CLLocationDirection类型,它只是一个基本数据类型"double"的typedef。在你的例子中,你试图向一个不是对象的东西发送消息!你应该简单地按照以下方式格式化double:

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


谢谢,这就是我感到非常困惑的地方。我想我需要更多地了解typedefs。 - Sean R

1
你是如何分配和初始化location的?请确保location被定义为(CLLocationDirection *)而不仅仅是(CLLocationDirection)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接