xcode捕获异常NSRangeException

时间:2016-05-11 16:01:10

标签: ios xcode swift error-handling exception-handling

处理异常时出错,每次在第一次启动后打开应用时,应用都会终止。我的应用程序是一旦启动,使用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)节。'

2 个答案:

答案 0 :(得分:1)

如果你想捕获异常,Swift的docatch语句将无济于事,因为它是Objective-C异常。

This answer提供了一个很好的解决方案。

答案 1 :(得分:0)

你的应用程序崩溃了,因为当viewdidload触发时,表尚未填充,因此它们没有要选择的行。尝试在viewdidAppear方法中执行此操作。