【问题标题】:xcode catch exception NSRangeExceptionxcode 捕获异常 NSRangeException
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我说的是 viewdidAppear 不是 ViewWillAppear :)
    • 我的文件中没有 ViewDidAppear。我只是创建它吗?
    • 是的,它是一个类似于 viewdidload 的函数。
    • override func viewDidAppear(animated: Bool) { }.This is the function
    猜你喜欢
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多