【发布时间】:2016-09-07 03:52:06
【问题描述】:
我在处理异常时出错,每次我在第一次启动后打开我的应用程序时,应用程序都会终止。我的应用程序一旦启动,就会使用 UI 表格视图输入数据。
有没有办法捕捉错误以使应用程序不会终止?请帮忙。
主视图控制器:
override func viewDidLoad() {
super.viewDidLoad()
firstLaunchOfApp()
}
//MARK: - Check for first launch
func firstLaunchOfApp() {
let launchedBefore = NSUserDefaults.standardUserDefaults().boolForKey("launchedBefore")
if launchedBefore {
print("Not first launch.")
let index = NSIndexPath(forRow: 0, inSection: 0)
tableView.selectRowAtIndexPath(index, animated: false, scrollPosition: .Top)
pushNewValuesToDetail()
}
else {
print("First launch, setting NSUserDefault.")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "launchedBefore")
dispatch_async(dispatch_get_main_queue()) {
self.addNewCourseWork()
}
}
}
XCode 消息:
不是第一次启动。 2016-05-11 16:27:45.530 CWCoreData[96559:855380] *** 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“-[UITableView _contentOffsetForScrollingToRowAtIndexPath:atScrollPosition:]: 行 (0) 越界 (0)对于第 (0) 节。'
【问题讨论】:
-
可能tableview还没有加载,在此之前调用tableview.reloadData,或者在viewWillAppear中选择
-
尝试在 ViewWillAppear 中放置“firstLaunchOfApp()” - 同样的错误。我将如何调用 tableview.reloadData?
-
由于视图尚未加载,table.reloadData 将无法工作。试试 viewdidAppear 中的代码
-
视图已加载,这就是为什么 viewDidLoad 被称为 :) 甚至名称都这么说。
-
这能回答你的问题吗? Catching NSException in Swift
标签: ios xcode swift error-handling exception-handling