Swift Admob发行';s线程1:EXC_错误_指令

Swift Admob发行';s线程1:EXC_错误_指令,swift,swift3,admob,cocoapods,exc-bad-instruction,Swift,Swift3,Admob,Cocoapods,Exc Bad Instruction,我已经为下面的问题工作了几天了,我对它感到有点不安。所以我有一个项目文件,我成功地用它启动了Cocoapod。我遵循了整个admob教程,完成了所有必需的步骤。当我尝试测试应用程序时,构建正常,但在应用程序启动后崩溃,并提供以下信息: 日志提供了以下信息: Google移动Ads SDK版本:(GADRequest.sdkVersion()) 致命错误:在展开可选值时意外发现nil (lldb) 这是app delegate.swift import UIKit import GoogleMo

我已经为下面的问题工作了几天了,我对它感到有点不安。所以我有一个项目文件,我成功地用它启动了Cocoapod。我遵循了整个admob教程,完成了所有必需的步骤。当我尝试测试应用程序时,构建正常,但在应用程序启动后崩溃,并提供以下信息:

日志提供了以下信息: Google移动Ads SDK版本:(GADRequest.sdkVersion()) 致命错误:在展开可选值时意外发现nil (lldb)

这是app delegate.swift

import UIKit
import GoogleMobileAds
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    //Use Firebase library to configure APIs
    FirebaseApp.configure()
    GADMobileAds.configure(withApplicationID: "ca-app-pub-***")
    return true
}

func applicationWillResignActive(_ application: UIApplication) {
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
    // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}

func applicationDidEnterBackground(_ application: UIApplication) {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

func applicationWillEnterForeground(_ application: UIApplication) {
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}

func applicationDidBecomeActive(_ application: UIApplication) {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

func applicationWillTerminate(_ application: UIApplication) {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}


}
这是ViewController.swift

import UIKit
import GoogleMobileAds
import Firebase

class ViewController: UIViewController {

@IBOutlet weak var btnMenuButton: UIBarButtonItem!
@IBOutlet weak var bannerView: GADBannerView!
override func viewDidLoad() {
    super.viewDidLoad()

    // Aanroepen print functie voor de Google AdMob banner
    print("Google Mobile Ads SDK version:(GADRequest.sdkVersion())")
    bannerView.adUnitID = "ca-app-pub-***"
    bannerView.rootViewController = self
    bannerView.load(GADRequest())

    // Do any additional setup after loading the view, typically from a nib.
    if revealViewController() != nil {
        //            revealViewController().rearViewRevealWidth = 62
        btnMenuButton.target = revealViewController()
        btnMenuButton.action = #selector(SWRevealViewController.revealToggle(_:))

//            revealViewController().rightViewRevealWidth = 150
//            extraButton.target = revealViewController()
//            extraButton.action = "rightRevealToggle:"




    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


}

我很确定我已经正确安装了cocoa pod/AdMob和所有必备组件。当我完成一个新项目的所有步骤时,一切都很好。但我试图理解为什么它在我当前的项目中不起作用。希望有人能给我指出正确的方向,提前谢谢

变量
bannerView
是一个隐式展开的可选变量。这意味着它是一种可选的变量类型。请记住,如果展开选项的值为
nil
,则展开选项将崩溃,因此通常您会执行一些可选的链接,如
,如果让
在展开之前进行测试,以防崩溃。在您的情况下,
bannerView
nil
,因此您的应用程序崩溃。隐式展开的可选项通过放置
来声明在其类型之后(在您的示例中是,
gadbanerview!

我建议您转到控制器的情节提要(或XIB),选择您的
GADBannerView
并转到连接检查器

并检查“参考插座”部分中是否有任何内容(除“新参考插座”外)。如果有,请单击X按钮断开连接

然后删除控制器中的
@IBOutlet弱var bannerView
行,并将
GADBannerView
重新连接到
ViewController
。如果节中没有内容,只需删除
@IBOutlet弱var bannerView
并将
gadbanerview
重新连接到
ViewController