我开始对MapKit感到非常沮丧。首先,我有
if (manager.authorizationStatus == kCLAuthorizationStatusAuthorizedWhenInUse) {
}
未能建立,因为它说" Property' authorizationStatus'没有找到类型为' CLLocationManager *'的对象。真的吗?因为我不仅确定CLLocationManager应该具有根据Apple文档https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html的authorizationStatus属性,而且它还在我键入时自动填充属性。我真的不知道现在该做什么。
最重要的是,我有
if (!manager) {
NSLog(@"manager created in viewDidLoad");
manager = [[CLLocationManager alloc]init];
manager.delegate = self;
[manager requestWhenInUseAuthorization];
NSLog(@"manager is supposed to ask for permission");
}
两个NSLog语句都被调用,但是没有要求授权,因此我收到错误。是的,我还在我的plist文件中添加了必要的密钥字符串,因为该应用程序正在我的手机上运行,但在其他人的手机上我收到此错误。唯一可能的解释是我在寻求许可之前尝试使用MapKit,但我已经彻底检查过,并且没有找到类似的东西。它甚至没有显示要求许可的警告框。
如果有人可以帮助解决这些问题,我们将不胜感激。直到那时我才无所事事,因为我已经尝试了一切。
编辑:我发现了问题。我有两个plist键NSLocationWhenInUseUsageDescription
和NSLocationAlwaysUsageDescription
......其中只有一个略有错误。如果plist条目缺失或拼写错误且没有警告您,Apple API不会拨打电话。
难以置信。
答案 0 :(得分:15)
+authorizationStatus
是CLLocationManager上的类方法,而不是属性。您将其调用为:
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse) {
//...
}
这表示在方法名称前面使用+
(而不是-
,这表示实例方法,或缺少通常伴随属性的符号)。