6

我对 Objective-C 比较陌生,而且对它还不太了解,所以对于这个可能是一个非常业余的问题,我深表歉意。

我正在尝试从 CLHeading 和 CLLocationDirection 获取磁航向。但是,我收到这行代码的编译错误:

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

错误是:

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

我真的不明白我在这里做错了什么。请帮忙!

4

3 回答 3

14

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

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

2) 使用位置管理器方法 -(void) startUpdatingHeading开始接收您正在搜索的信息

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

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

希望这可以帮助。

于 2009-06-25T15:01:16.967 回答
3

MagneticHeading 是 CLLocationDirection 类型,它只是原始数据类型“double”的 typedef。在您的示例中,您试图向不是对象的东西发送消息!您应该像这样简单地格式化双精度:

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

于 2009-06-26T12:40:57.023 回答
1

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

于 2009-06-25T13:30:27.023 回答