我不明白为什么会出现错误:使用未声明的标识符“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 文件夹中放入什么来补充这一点并完成我的应用程序的位置服务?
最佳答案
一些想法:
您是否已将 CoreLocation.framework 包含在 linked libraries/frameworks 列表中?
您是否已完成 CoreLocation.framework header 的导入?
#import <CoreLocation/CoreLocation.h>
我不会认为
CoreLocation
对于您的类来说是一个好名字,因为上面的行和您的行之间存在混淆:#import "CoreLocation.h"
它应该可以工作(具有这两行),但似乎不必要地令人困惑(并且存在与
#import
的功能相关的风险,该功能会自动阻止两次加载相同的 .h 文件)。我建议给您的自定义
CoreLocation
类 (a) 一个唯一的名称,不会与现有 header 混淆; (b) 一个更有意义的名称,表明它正在做什么(例如CoreLocationUtilities
或AppCoreLocationManager
或其他)。您的 alloc/init 方法行引用变量名称:
locationManager = [[locationManager alloc] init];
它应该引用一个类名,例如:
locationManager = [[CLLocationManager alloc] init];
如果您在那一行没有收到错误,这让我想知道您是如何定义
locationManager
实例变量的。与您的问题无关,我对您的自定义
CoreLocation
类作为NSObject
子类的引用感到困惑,但随后又具有viewDidLoad
方法,通常是 View Controller 方法。这似乎只会让水变得更加浑浊。
关于location - CoreLocation 中使用未声明标识符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17849042/