application(_:didFinishLaunchingWithOptions:)' nearly matches optional requirement

前端 未结 2 1845
时光取名叫无心
时光取名叫无心 2021-02-02 09:21

After installing Xcode 8 beta 6, I\'m getting a warning saying:

Instance method \'application(_:didFinishLaunchingWithOptions:)\' nearly matches optional

相关标签:
2条回答
  • 2021-02-02 10:03

    iOS 12 SDK Update

    In the iOS 12 SDK (that ships with Xcode 10), UIApplicationLaunchOptionsKey has now been renamed to the nested type UIApplication.LaunchOptionsKey, so you'll want:

    func application(
      _ application: UIApplication,
      didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        // ...
    }
    

    iOS 10 and 11 SDKs (Xcode 8 and 9)

    This warning is due to the fact that the didFinishLaunchingWithOptions: parameter of the application(_:didFinishLaunchingWithOptions:) delegate method is now bridged to Swift as a [UIApplicationLaunchOptionsKey: Any]?, rather than an [NSObject : AnyObject]?.

    Therefore you'll need to update your implementation to reflect this change:

    func application(
      _ application: UIApplication,
      didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
    ) -> Bool {
        // ...
    }
    

    Note that neither of Xcode's suggested fixes will actually fix the problem, they'll only conceal your implementation of application(_:didFinishLaunchingWithOptions:) from Objective-C – meaning that it'll never actually get called.

    0 讨论(0)
  • 2021-02-02 10:10

    the first parameter passed into the function no longer has an external name. This is really just a minor detail since you don’t call this method directly, and it’s a quick fix to make the compiler happy. You can either manually edit that first parameter name to _, or just let Xcode handle this for you.

    func application(_ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool  
    

    or the New Syntax

    func application(_ application:UIApplication, 
    didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool // or remove = nil and try
    

    you can get the latest Documentation from apple and sample link in here

    0 讨论(0)
提交回复
热议问题