我已将我的代码转换为swift 3并且已提交到app store.当他们打开应用程序时,它会在第一时间崩溃.结果,我检查了我的崩溃日志,它在这一行崩溃了.
if let myLaunchOptions: NSDictionary = launchOptions as NSDictionary? {
Run Code Online (Sandbox Code Playgroud)
我的整体代码是这样的.我知道launchOptions可能是零,甚至可能不是NSDictionary.这就是为什么我这样检查它并且它在那条线上失败了.我可以知道用swift 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)
}
Run Code Online (Sandbox Code Playgroud)
我的崩溃日志就在这里.
小智 13
你应该检查并获得这样的用户活动:
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
}
Run Code Online (Sandbox Code Playgroud)
我不得不为了让斯威夫特4这项工作,因为更新@大卫·罗德里格斯的解决方案.userActivityType是NSString。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if let userActivityDict = launchOptions?[.userActivityDictionary] as? [AnyHashable : Any],
let userActivity = userActivityDict["UIApplicationLaunchOptionsUserActivityKey"] as? NSUserActivity {
continueUserActivity(userActivity)
}
return true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2209 次 |
| 最近记录: |