Неоднозначная ссылка на «индекс» члена в AppDelegate

Я переношу свой код Swift с версии 2 на 3. В моем AppDelegate.swift у меня реализован следующий метод:

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

    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

    // error below this line
    if let notification = launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? [NSObject : AnyObject] {
    } else {}
    return true
}

Я получаю следующую ошибку:

Неоднозначная ссылка на «индекс» члена

Как я могу решить эту проблему?


person Alexandre Lara    schedule 02.03.2017    source источник
comment
Обычно это происходит потому, что вы сделали something[somethingelse], но не указали компилятору, что something может использовать [] (индекс). Кроме того, ваш метод не Swift 3: проверьте здесь: developer.apple.com/ reference/uikit/uiapplicationdelegate/ для Swift3-совместимого.   -  person Larme    schedule 02.03.2017


Ответы (1)


Следуя рекомендациям @Larme, я решил проблему, изменив сигнатуру метода на:

func application(_ application: UIApplication,
                          didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {

    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

// error below this line
    if let notification = launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? [NSObject : AnyObject] {
    } else {}
    return true
}
person Alexandre Lara    schedule 02.03.2017