2016-08-16 5 views
7

Недавно в Xcode 8 beta 6 (8S201h) это стало проблемой.UIApplicationLaunchOptionsShortcutItemKey не существует в Swift 3?

UIApplicationLaunchOptionsShortcutItemKey 

Вот ошибка:

enter image description here

Кто-нибудь еще с этим вопросом?

var performShortcutDelegate = true 
if let shortcutItem = launchOptions[UIApplicationLaunchOptionsKey.shortcutItem] as? UIApplicationShortcutItem { 
    print("ok") 
    self.shortcutItem = shortcutItem 
    performShortcutDelegate = false 
} 
return performShortcutDelegate 
+0

Попробуйте использовать 'guard': http://stackoverflow.com/questions/33689933/ambiguous-reference-to-member -subscript-on-dictionary –

+0

Не повезло :(такая же ошибка –

+0

Итак, вы все еще получаете ошибку 'неоднозначная ссылка на членский индекс'? Ваш код выглядит правильно, как показано, поэтому он может иметь какое-то отношение к закрывающей функции. также возможно, что вам нужно включить блок 'if #available (iOS 9.0, *) {}' вокруг вашего кода быстрого доступа. Дополнительная информация/контекст будет полезен. :) –

ответ

5

Постоянная изменен (см. documentation). Вам также необходимо развернуть launchOptions перед использованием любых значений, которые он содержит.

Функция включения включена для контекста.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    if let launchOptions = launchOptions { 
     if #available(iOS 9.0, *) { 
      if let shortcutItem = launchOptions[UIApplicationLaunchOptionsKey.shortcutItem] as? UIApplicationShortcutItem { 
       print("Shortcut: \(shortcutItem)") 
      } 
     } 
    } 
    return true 
} 
+1

Если это находится в ['application (_: willFinishLaunchingWithOptions:)'] (https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623032-application), тогда словарь 'launchOptions' уже известен как тип ключа' UIApplicationLaunchOptionsKey'. Поэтому вы можете просто использовать 'launchOptions [.shortcutItem]'. – rickster

+1

Нет, я все равно получаю ту же самую точную ошибку. –

+0

Можете ли вы обновить свой вопрос, включив в него код и функцию внутри? (В идеале, вставьте его как встроенный код, а не как снимок экрана.) –

1

launchOptions словарь тип изменился в параметрах функции на [UIApplicationLaunchOptionsKey: AnyObject].

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

    ... 

} 
0

Попробуйте это .. Его работа для меня, используя Xcode8, swift3

//Check for ShortCutItem 
    if #available(iOS 9.0, *) { 
     if let shortcutItem = launchOptions?[UIApplicationLaunchOptionsKey.shortcutItem] as? UIApplicationShortcutItem { 
     } 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^