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

Posted

技术标签:

【中文标题】在 CoreLocation 中使用未声明的标识符错误【英文标题】:Use of Undeclared Identifier error in CoreLocation 【发布时间】:2013-07-24 19:35:22 【问题描述】:

我不明白为什么会出现错误:使用未声明的标识符“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】:

一些想法:

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

    CoreLocation.framework 标头的导入完成了吗?

    #import <CoreLocation/CoreLocation.h>
    

    我不会认为 CoreLocation 对你的班级来说是个好名字,因为上面的行和你的行之间的混淆:

    #import "CoreLocation.h"
    

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

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

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

    locationManager = [[locationManager alloc] init];
    

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

    locationManager = [[CLLocationManager alloc] init];
    

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

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

【讨论】:

我在这一行仍然遇到错误:- (NSString *)deviceLocation; 和我的第一个“”在底部? 我已经解决了问题并获得了坐标。

以上是关于在 CoreLocation 中使用未声明的标识符错误的主要内容,如果未能解决你的问题,请参考以下文章

在类中使用未声明的标识符

在 if 语句中声明变量时使用未解析的标识符

使用未声明的类型“DKAsset”,使用未解析的标识符“DKImagePickerController”?

错误:使用未声明的标识符“touchesBegan”

发布 iOS 构建错误 - 使用未声明的标识符“Twitter”

XCode 使用未声明的标识符,仅在打开文件时出现