应用程序处于发布模式的异常,而不是调试模式

时间:2015-01-03 03:57:47

标签: uitableview swift

我的didSelectRowAtIndexPath方法中有例外,我不太清楚为什么。我向用户显示了他们可以选择的可能性列表,UITableView是根据存储在Core Data中的值填充的。当前所选项目具有Checkmark指标。我的方法如下:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    tableView.deselectRowAtIndexPath(indexPath, animated: true)

    let value = self.fetchedResultsController.objectAtIndexPath(indexPath) as CoreDataObject
    currentSelected = value.id as Int

    self.tableView.reloadData()
}

在开发模式下,它很好,但在生产和测试飞行中,它会在此方法中崩溃。崩溃日志如下:

Crashed Thread 0 :
0   CoreFoundation  0x25f41a7d  _CFRetain + 165
1   UIKit   0x29619d67  -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 919
2   UIKit   0x296cb9df  -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 195
3   UIKit   0x2957da25  _applyBlockToCFArrayCopiedToStack + 309
4   UIKit   0x294f982b  _afterCACommitHandler + 459
5   CoreFoundation  0x26007d95  __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 21
6   CoreFoundation  0x26005453  __CFRunLoopDoObservers + 279
7   CoreFoundation  0x2600585b  __CFRunLoopRun + 915
8   CoreFoundation  0x25f533c1  CFRunLoopRunSpecific + 477
9   CoreFoundation  0x25f531d3  CFRunLoopRunInMode + 107
10  GraphicsServices    0x2d3510a9  GSEventRunModal + 137
11  UIKit   0x29562fa1  UIApplicationMain + 1441

这里有什么我想念的吗?为什么这种方法会崩溃?我只是存储当前选择的ID,然后重新加载数据,以便在重新加载后显示复选标记。我有什么东西在这里失踪吗?它应该只是获取新的ID,然后重新加载数据。

我使用的CoreDataObject来自Objective-Cid字段为NSNumber

我尝试了以下其他解决方案:

Crash when calling selectRowAtIndexPath:animated:scrollPosition:

iphone app crash at -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:]

iOS - didSelectRowAtIndexPath causes crash in app

1 个答案:

答案 0 :(得分:0)

如果有其他人有这个问题。 currentSelected是一个声明为Int的全局变量,value对象的id字段是`NSNumber。我将其更改为以下内容并且有效:

self.currentSelected = value.id.integerValue