2011-12-15 66 views
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

+2

請發佈Xcode控制檯中的內容。很有可能會拋出一個異常,它會出現在那裏。我的猜測是,你需要將你在`[self.tableView beginUpdates]`和`[self.tableView endUpdates]`中刪除行的位置換掉,並丟失`[self.tableView reloadData]`。 – mattjgalloway 2011-12-15 01:21:55

+0

如果您正在Simulator上運行此操作並使用XCode4,則應該看到調試控制檯XCode Menu - > View - > Debug Area - > Active console。看看它爲什麼與SIGABRT墜毀。發佈調試信息有助於我們找出造成問題的原因,而不是採取模糊的猜測。從你的代碼猜測你可能會從不可變數組中刪除對象(NSArray是不可變數組,NSMutableArray是可變數組)。 [delegate contentArray]可能是不可變的數組。這是猜測你的應用程序可能崩潰的原因。 – 0x8badf00d 2011-12-15 01:25:31

回答

1

這是從日誌中的重點線:

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).' 

mattjgalloway對解決方案100%正確。我希望他張貼這個答案,以便他可以得到這個獎勵。