将 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 添加到我的项目中

从使用 iOS 6 SDK 构建的应用程序中排除 AirDrop 并添加到阅读列表

Google Map API V3:如何将自定义数据添加到标记