将 Google Map SDK 添加到 iOS6 时将错误无法识别的选择器发送到类
Posted
技术标签:
【中文标题】将 Google Map SDK 添加到 iOS6 时将错误无法识别的选择器发送到类【英文标题】:error unrecognized selector sent to class while adding Google Map SDK to iOS6 【发布时间】:2013-01-22 19:50:36 【问题描述】:这是一个单视图应用程序,我按照链接中给出的说明进行操作 https://developers.google.com/maps/documentation/ios/start 用于将谷歌地图 SDK 添加到 iOS6。 错误是:
unrecognized selector sent to class 0xe2b0
2013-02-07 15:21:29.788 mapApp[2061:12e03] *** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '+[GMSCameraPosition
cameraWithLatitude:longitude:zoom:]: unrecognized selector sent to class 0xe2b0'
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
//initializing google map api key
[GMSServices provideAPIKey:@"google's api key goes here"];
[self.window makeKeyAndVisible];
return YES;
ViewController.m
#import "ViewController.h"
#import <GoogleMaps/GoogleMaps.h>
@interface ViewController ()
@end
@implementation ViewController
GMSMapView *mapView;
- (void)viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
GMSCameraPosition *cam = [GMSCameraPosition cameraWithLatitude:13.0245231
longitude:77.64072579999993
zoom:6];
mapView = [GMSMapView mapWithFrame:CGRectZero camera:cam];
mapView.myLocationEnabled = YES;
GMSMarkerOptions *options = [[GMSMarkerOptions alloc]init ];
options.position = CLLocationCoordinate2DMake(13.025738,77.637809);
options.title = @"ensign";
options.snippet = @"kalyan nagar";
[mapView addMarkerWithOptions:options];
main.m
#import <UIKit/UIKit.h>
#import <GoogleMaps/GoogleMaps.h>
int main(int argc, char *argv[])
@autoreleasepool
return UIApplicationMain(argc, argv,nil, NSStringFromClass([AppDelegate class]));
在跟踪错误时,它显示在main.m
中的return
语句中,该语句来自执行第一行后的-viewDidLoad
方法
GMSCameraPosition *cam = [GMSCameraPosition cameraWithLatitude:13.0245231
longitude:77.64072579999993
zoom:6];
它转义了其余的行。
【问题讨论】:
只是一个疯狂的猜测,但是当您将 lat & long 限制在小数点后几位...比如 13.02 和 77.64 时会发生什么? 不,没有区别。 【参考方案1】:您是否在 the instructions 的第 7 步中将 -ObjC
添加到其他链接器标志?
--
额外信息编辑:注意-ObjC
区分大小写。
【讨论】:
哎呀!..谢谢..我现在添加,模拟器屏幕是空白的,我在日志屏幕中收到此消息:2013-02-08 10:28:17.061 mapApp[487:14603] Google iOS 版 Maps SDK:1.0.2.1667 2013-02-08 10:28:17.369 mapApp[487:12e03] ClientParametersRequest 失败,剩余 3 次尝试。错误域=DASHConnectionError Code=100“操作无法完成。(DASHConnectionError 错误 100。)”...而且同样的消息重复了 16 次。 如果您没有提供正确的 API 密钥,这似乎是您得到的错误。您确定您使用了 iOS SDK 的 API 密钥吗?例如看这里:***.com/questions/14103518/… 是的,我很确定。因为我也遇到了类似的问题。然后我添加了新创建的密钥,然后错误也是一样的。这是新的密钥==>>@"AIzaSyA5RujfEHK5eSqCifcow-xnHOOtwH9_AFE" 也许可以检查您应用的捆绑包 ID 是否与您在 API 控制台中输入的捆绑包 ID 匹配? 通过将 API 控制台中的包 ID 更改为不正确的内容,我能够得到相同的错误,然后当我再次更改 API 控制台中的包 ID 时,它得到了修复。虽然这两次行为改变都需要 5 分钟左右(我猜在 API 控制台中进行更改后,需要一段时间才能在 Google 的系统中传播)。【参考方案2】:我遇到了同样的问题。确保将 -ObjC 标志添加到“目标”而不是“项目”的“构建设置”中。
附:在这两个地方添加它也不会破坏它。
【讨论】:
由于某种原因它破坏了其他东西【参考方案3】:谷歌文档说 选择您的项目,而不是特定目标,然后打开 Build Settings 选项卡。 在其他链接器标志部分中,添加 -ObjC。如果这些设置不可见,请将 Build Settings 栏中的过滤器从 Basic 更改为 All。 有时这是错误的...... 我还必须将链接器标志添加到目标中,以使其正常工作。这应该可以帮助某人
【讨论】:
以上是关于将 Google Map SDK 添加到 iOS6 时将错误无法识别的选择器发送到类的主要内容,如果未能解决你的问题,请参考以下文章
Google Map/Places API 是不是与 iOS 6 兼容?
python 将Google App Engine SDK添加到Python virtualenv
更新 google plus 和 facebook SDK 后应用程序在设备 (ios 6) 上崩溃
无法将没有可可豆荚的 Google Analytics iOS SDK 添加到我的项目中