2016-10-18 40 views
0

我已將我的代碼轉換爲swift 3,並且已提交到應用商店。當他們打開應用程序時,它會在第一時間崩潰。因此,我檢查了我的crashlog,並在此行崩潰。在Swift中檢查launchOptions 3

if let myLaunchOptions: NSDictionary = launchOptions as NSDictionary? { 

我的整體代碼是這樣的。我知道launchOptions可以是零,它甚至可能不是NSDictionary。這就是爲什麼我這樣檢查,並在這條線上失敗。我可以知道如何檢查/防止迅速3?

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

    if let myLaunchOptions: NSDictionary = launchOptions as NSDictionary? { 
     let test = myLaunchOptions[UIApplicationLaunchOptionsKey.userActivityDictionary] as! NSDictionary 
     let userActivity = test["UIApplicationLaunchOptionsUserActivityKey"] as! NSUserActivity 
     NSLog("test1:" + String(describing: userActivity)) 
     continueUserActivity(userActivity) 
     } 

我的崩潰日誌在這裏。

enter image description here

+3

什麼是鑄造'NSDictionary'的地步?它是Swift代碼,將其作爲Swift字典保留。 – rmaddy

+0

崩潰的錯誤是什麼? – rmaddy

+0

如果您不知道數據類型,請使用下面的行。 – Prav

回答

7

您應該檢查並獲取用戶的活動是這樣的:

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

    if let userActivityDictionary = launchOptions?[.userActivityDictionary] as? [UIApplicationLaunchOptionsKey : Any], 
     let userActivity = userActivityDictionary[.userActivityType] as? NSUserActivity { 
     continueUserActivity(userActivity) 
    } 

    return true 
} 
+0

謝謝。讓我檢查一下。 –

+0

我已經使用你的,它解決了我的問題。蘋果現在批准我的應用程序。謝謝。 –