Ich habe dieses Problem mit meiner App bekommen und bin mir nicht sicher, was schief gelaufen ist. Fatal Exception: NSInternalInconsistencyException Zelle fehlt für neu sichtbare Zeile 78UITableView Fehlende Zelle für die neu sichtbare Zeile NSInternalInconsistencyException
Hier ist der Stack-Trace:
Fatal Exception: NSInternalInconsistencyException
0 CoreFoundation 0x191bbefd8 __exceptionPreprocess
1 libobjc.A.dylib 0x190620538 objc_exception_throw
2 CoreFoundation 0x191bbeeac +[NSException raise:format:]
3 Foundation 0x192656710 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:]
4 UIKit 0x198022b3c __46-[UITableView _updateWithItems:updateSupport:]_block_invoke.1049
5 UIKit 0x197d234b8 +[UIView(UIViewAnimationWithBlocks) _setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenerator:completion:]
6 UIKit 0x197d39bac +[UIView(UIViewAnimationWithBlocks) animateWithDuration:delay:options:animations:completion:]
7 UIKit 0x197ee8770 -[UITableView _updateWithItems:updateSupport:]
8 UIKit 0x197eccfbc -[UITableView _endCellAnimationsWithContext:]
9 MyApp 0x1000ed518 -[UICommentsTableViewController insertNewComment:atLocation:] (UICommentsTableViewController.m:1228)
10 MyApp 0x1000e99e8 -[UICommentsTableViewController onCommentsReceivedWithMessage:] (UICommentsTableViewController.m:881)
11 MyApp 0x1000e9094 -[UICommentsTableViewController processWSMessage:] (UICommentsTableViewController.m:803)
12 MyApp 0x1000e8f84 -[UICommentsTableViewController webSocket:didReceiveMessage:] (UICommentsTableViewController.m:788)
13 MyApp 0x10009ea30 __30-[SRWebSocket _handleMessage:]_block_invoke (SRWebSocket.m:837)
14 libdispatch.dylib 0x190a769e0 _dispatch_call_block_and_release
15 libdispatch.dylib 0x190a769a0 _dispatch_client_callout
16 libdispatch.dylib 0x190a7b5e8 _dispatch_main_queue_callback_4CF
17 CoreFoundation 0x191b6d0c0 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
18 CoreFoundation 0x191b6acdc __CFRunLoopRun
19 CoreFoundation 0x191a9ad94 CFRunLoopRunSpecific
20 GraphicsServices 0x193504074 GSEventRunModal
21 UIKit 0x197d53130 UIApplicationMain
22 MyApp 0x10011ba40 main (main.m:7)
23 libdyld.dylib 0x190aa959c start
Der Fehler hier geschieht:
- (void)insertNewComment:(NSIndexSet *)indexSet atLocation:(NSInteger)location{
[self.tableView beginUpdates];
NSMutableArray *indexArray = [NSMutableArray new];
if (!indexSet) {
[indexArray addObject:[NSIndexPath indexPathForRow:location inSection:0]];
} else {
[indexSet enumerateIndexesUsingBlock:^(NSUInteger index, BOOL *stop) {
[indexArray addObject:[NSIndexPath indexPathForRow:index inSection:0]];
}];
}
[self.tableView insertRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationBottom];
[self.tableView endUpdates];
}
I Automatisches Layout für die Zelle bin mit, aber ich habe die Höhe manuell berechnet und sie entsprechend ihrer Geräteausrichtung zwischengespeichert.
Höhe Rechner:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
Comment* comment = self.comments[indexPath.row];
CGFloat cellHeight = [self getHeightForLayoutMode:self.screenMode forCommentID:comment.commentID];
if(cellHeight > 0) {
return cellHeight;
}
if([comment isType2]) {
[self setHeightForLayoutMode:self.screenMode forCommentID:comment.commentID height:106];
return 106;
}
CGFloat width = tableView.bounds.size.width - 100;
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
NSDictionary *attributes = @{NSFontAttributeName: [UIFont fontWithName:@"MyFont" size:11.0f], NSParagraphStyleAttributeName:paragraphStyle};
CGRect rect = [comment.message boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attributes
context:nil];
CGFloat height = 31+ceilf(rect.size.height);
[self setHeightForLayoutMode:self.streamViewController.screenMode forCommentID:comment.commentID height:height];
return height;
}
Jemand hatte ein Problem wie dieses (Crash with Missing cell for newly visible row when updating UITableView), und sie estimatedSectionHeaderHeight nur entfernt, aber ich habe nicht estimatedSectionHeaderHeight auf meinen Code.
hmm, das ist seltsam, weil ich nur 1 Abschnitt habe. [indexArray addObject: [NSIndexPath indexPathForRow: Position inSection: 0]]; – ordinaryman09
Auch ich legte ein Protokoll vor dem Absturz und das ist, was ich sehe: \t beginnen einfügenNewComment Speicherort ist: 773, Kommentar Anzahl ist 774 so die self.comments.count ist 774, und ich bin am Index 773 einfügen Obwohl die Abstürze auf allen Geräten auftreten, tritt der größte Teil des Absturzes (85%) innerhalb von iPhone 5, 5s, SE auf. – ordinaryman09