Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UICollectionView assertion error on stale data

In the course of trying to unload one batch of images from my collection view and then replace them with another batch, I run into an error where, depending on whether the original or subsequent group of images was more or less than the intended replacement, an assertion error occurs which says:

*** Assertion failure in -[UICollectionViewData validateLayoutInRect:],  /SourceCache/UIKit_Sim/UIKit-2891.1/UICollectionViewData.m:341 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException',  reason: 'UICollectionView recieved layout attributes for a cell with an  index path that does not exist: <NSIndexPath: 0xb141c60> {length = 2, path = 0 - 2} 

In this case the existing list of images count was 5 and the new list of images count was 2. So, when it got to the third image - the exception occurred - indicating that the UI CollectionViewDataDelegate did not know of the change in the data stream.

Any suggestions about how to make sure the new images will be referenced by the UICollectionView? Of course I have called 'reloadData'…

Thank you

like image 710
user1686700 Avatar asked Aug 20 '13 15:08

user1686700


1 Answers

I run in the same problem. Code runs under 6.1 and crashes under 7.0 I solved the issue the following way:

In the function

-(NSInteger) numberOfSectionsInCollectionView:(UICollectionView *)collectionView 

I call

[myCollectionView.collectionViewLayout invalidateLayout]; 

That´s all.

like image 96
Dominic Sander Avatar answered Sep 20 '22 22:09

Dominic Sander