2

我不明白为什么会出现错误:使用未声明的标识符“KCLDistanceFilterNone”和“kCLLocationAccuracyHundredMeters”不断出现在我的 CoreLocation.m 文件夹中。即使我删除了“;”也有更多错误 从选择行。有人可以帮忙吗?

#import "CoreLocation.h"

@implementation CoreLocation : NSObject 

- (NSString *)deviceLocation {
    NSString *theLocation = [NSString stringWithFormat:@"latitude: %f longitude: %f", locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude];
    return theLocation;
}

- (void)viewDidLoad
{
    locationManager = [[locationManager alloc] init];
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
    [locationManager startUpdatingLocation];
}

@end

另外,我会在我的 CoreLocation.m 文件夹中添加什么来补充它并为我的应用程序完成定位服务?

4

1 回答 1

2

几个想法:

  1. 您是否将 CoreLocation.framework 包含在链接库/框架列表中?

  2. 您是否完成了 CoreLocation.framework 标头的导入?

    #import <CoreLocation/CoreLocation.h>
    
  3. 我不会认为这CoreLocation对您的班级来说是一个好名字,因为上述行与您的行之间存在混淆:

    #import "CoreLocation.h"
    

    它应该可以工作(具有这两行),但它似乎不必要地令人困惑(并且存在与#import自动阻止加载相同的 .h 文件两次的功能相关的问题)。

    我建议给您的自定义CoreLocation类 (a) 一个唯一的名称,该名称不会与现有标题混淆;(b) 一个更有意义的名称,表明它正在做什么(例如CoreLocationUtilitiesAppCoreLocationManager或其他)。

  4. 你的 alloc/init 方法行引用了一个变量名:

    locationManager = [[locationManager alloc] init];
    

    它大概应该引用一个类名,例如:

    locationManager = [[CLLocationManager alloc] init];
    

    locationManager如果您在该行没有收到错误,这让我想知道您是如何定义实例变量的。

  5. 与您的问题无关,我对您的自定义CoreLocation类作为NSObject子类的引用感到困惑,但随后有一个viewDidLoad方法,这通常是一个视图控制器方法。这似乎只会使水更加浑浊。

于 2013-07-25T04:50:53.280 回答