0
我有下面的代码:当我运行它SIGABRT与编辑表格 - IOS
- (void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
[[delegate contentArray] removeObjectAtIndex:indexPath.row];
[self.tableView reloadData];
}
if (editingStyle == UITableViewCellEditingStyleInsert) {
}
}
现在,编辑按钮工程和删除界面出现,但我得到一个SIGABRT错误,当我按下删除按钮。
我不知道如何读日志文件还,但如果需要的话,告诉我如何让他们到你:-)
编辑:
我已经在这里张贴的控制台日志:
GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Mon Aug 8 20:32:45 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".sharedlibrary apply-load-rules all
Attaching to process 41600.
2011-12-15 14:35:31.932 OrderList[41600:b903] *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-1448.89/UITableView.m:995
2011-12-15 14:35:32.227 OrderList[41600:b903] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (4) must be equal to the number of rows contained in that section before the update (4), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted).'
*** Call stack at first throw:
(
0 CoreFoundation 0x00fd55a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x01129313 objc_exception_throw + 44
2 CoreFoundation 0x00f8def8 +[NSException raise:format:arguments:] + 136
3 Foundation 0x008173bb -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116
4 UIKit 0x00092e8b -[UITableView(_UITableViewPrivate) _endCellAnimationsWithContext:] + 8420
5 UIKit 0x00081cf8 -[UITableView deleteRowsAtIndexPaths:withRowAnimation:] + 56
6 OrderList 0x00002546 -[RootViewController tableView:commitEditingStyle:forRowAtIndexPath:] + 166
7 UIKit 0x0007f037 -[UITableView(UITableViewInternal) animateDeletionOfRowWithCell:] + 101
8 UIKit 0x000144fd -[UIApplication sendAction:to:from:forEvent:] + 119
9 UIKit 0x000a4799 -[UIControl sendAction:to:forEvent:] + 67
10 UIKit 0x000a6c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
11 UIKit 0x000a57d8 -[UIControl touchesEnded:withEvent:] + 458
12 UIKit 0x00038ded -[UIWindow _sendTouchesForEvent:] + 567
13 UIKit 0x00019c37 -[UIApplication sendEvent:] + 447
14 UIKit 0x0001ef2e _UIApplicationHandleEvent + 7576
15 GraphicsServices 0x00cd6992 PurpleEventCallback + 1550
16 CoreFoundation 0x00fb6944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
17 CoreFoundation 0x00f16cf7 __CFRunLoopDoSource1 + 215
18 CoreFoundation 0x00f13f83 __CFRunLoopRun + 979
19 CoreFoundation 0x00f13840 CFRunLoopRunSpecific + 208
20 CoreFoundation 0x00f13761 CFRunLoopRunInMode + 97
21 GraphicsServices 0x00cd51c4 GSEventRunModal + 217
22 GraphicsServices 0x00cd5289 GSEventRun + 115
23 UIKit 0x00022c93 UIApplicationMain + 1160
24 OrderList 0x00001bcd main + 125
25 OrderList 0x00001b45 start + 53
)
terminate called throwing an exception(gdb)
--Jeff
请发布Xcode控制台中的内容。很有可能会抛出一个异常,它会出现在那里。我的猜测是,你需要将你在`[self.tableView beginUpdates]`和`[self.tableView endUpdates]`中删除行的位置换掉,并丢失`[self.tableView reloadData]`。 – mattjgalloway 2011-12-15 01:21:55
如果您正在Simulator上运行此操作并使用XCode4,则应该看到调试控制台XCode Menu - > View - > Debug Area - > Active console。看看它为什么与SIGABRT坠毁。发布调试信息有助于我们找出造成问题的原因,而不是采取模糊的猜测。从你的代码猜测你可能会从不可变数组中删除对象(NSArray是不可变数组,NSMutableArray是可变数组)。 [delegate contentArray]可能是不可变的数组。这是猜测你的应用程序可能崩溃的原因。 – 0x8badf00d 2011-12-15 01:25:31