在CoreLocation中使用未声明的标识符错误

时间:2013-07-25 04:32:30

标签: location core-location cllocationmanager

我不知道错误的原因:使用未声明的标识符'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文件夹中添加什么来补充这一点并为我的应用程序完成位置服务?

1 个答案:

答案 0 :(得分:1)

有几点想法:

  1. 您是否已将CoreLocation.framework包含在linked libraries/frameworks列表中?

  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方法,这通常是视图控制器方法。这似乎只会让水更加浑浊。