2016-08-16 25 views
7

Niedawno w Xcode 8 beta 6 (8S201h) stało się to problemem.UIApplicationLaunchOptionsShortcutItemKey nie ma w Swift 3?

UIApplicationLaunchOptionsShortcutItemKey 

Oto błąd:

enter image description here

Każdy inny posiadające ten problem?

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

Spróbuj użyć 'guard': http://stackoverflow.com/questions/33689933/ambiguous-reference-to-member -subscript-on-dictionary –

+0

Powodzenia :(ten sam błąd –

+0

Wciąż otrzymujesz błąd "niejednoznaczny odnośnik do indeksu dolnego członka" Twój kod wygląda tak, jak pokazano, więc może mieć coś wspólnego z funkcją otaczającą. możliwe również, że musisz dołączyć blok 'if #available (iOS 9.0, *) {}' wokół kodu skrótu.Będziesz potrzebował więcej informacji/kontekstu :) –

Odpowiedz

5

Stała uległa zmianie (patrz documentation). Musisz również rozwinąć launchOptions przed użyciem jakichkolwiek zawartych w nim wartości.

Funkcja włączania jest uwzględniona w kontekście.

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

Jeśli jest to w ['application (_: willFinishLaunchingWithOptions:)'] (https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623032-application), to Słownik 'launchOptions' jest już znany jako typ klucza" UIApplicationLaunchOptionsKey ". Możesz więc użyć 'launchOptions [.shortcutItem]'. – rickster

+1

Nie, nadal otrzymuję ten sam dokładny błąd. –

+0

Czy możesz zaktualizować swoje pytanie, aby dołączyć kod i funkcję, w której jest zainstalowany? (Najlepiej, wklej to jako wbudowany kod, a nie jako zrzut ekranu.) –

1

launchOptions słownik typ zmieniła się w parametrach funkcji na [UIApplicationLaunchOptionsKey: AnyObject].

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

    ... 

} 
0

Spróbuj .. Jego praca dla mnie za pomocą Xcode8, swift3

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