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