Bugfix: Fixes crash on multiple update.

This commit is contained in:
Frederic Jacobs 2014-12-12 22:41:28 +01:00
parent 80a8c39213
commit e269bd62ee

View file

@ -687,40 +687,42 @@ typedef enum : NSUInteger {
return;
}
for (YapDatabaseViewRowChange *rowChange in messageRowChanges)
{
switch (rowChange.type)
[self.collectionView performBatchUpdates:^{
for (YapDatabaseViewRowChange *rowChange in messageRowChanges)
{
case YapDatabaseViewChangeDelete :
switch (rowChange.type)
{
[self.collectionView deleteItemsAtIndexPaths:@[ rowChange.indexPath ]];
break;
}
case YapDatabaseViewChangeInsert :
{
[self.collectionView insertItemsAtIndexPaths:@[ rowChange.newIndexPath ]];
break;
}
case YapDatabaseViewChangeMove :
{
[self.collectionView deleteItemsAtIndexPaths:@[ rowChange.indexPath]];
[self.collectionView insertItemsAtIndexPaths:@[ rowChange.newIndexPath]];
break;
}
case YapDatabaseViewChangeUpdate :
{
NSMutableArray *rowsToUpdate = [@[rowChange.indexPath] mutableCopy];
if (_lastDeliveredMessageIndexPath) {
[rowsToUpdate addObject:_lastDeliveredMessageIndexPath];
case YapDatabaseViewChangeDelete :
{
[self.collectionView deleteItemsAtIndexPaths:@[ rowChange.indexPath ]];
break;
}
case YapDatabaseViewChangeInsert :
{
[self.collectionView insertItemsAtIndexPaths:@[ rowChange.newIndexPath ]];
break;
}
case YapDatabaseViewChangeMove :
{
[self.collectionView deleteItemsAtIndexPaths:@[ rowChange.indexPath]];
[self.collectionView insertItemsAtIndexPaths:@[ rowChange.newIndexPath]];
break;
}
case YapDatabaseViewChangeUpdate :
{
NSMutableArray *rowsToUpdate = [@[rowChange.indexPath] mutableCopy];
if (_lastDeliveredMessageIndexPath) {
[rowsToUpdate addObject:_lastDeliveredMessageIndexPath];
}
[self.collectionView reloadItemsAtIndexPaths:rowsToUpdate];
break;
}
[self.collectionView reloadItemsAtIndexPaths:rowsToUpdate];
break;
}
}
}
[self finishReceivingMessage];
} completion:^(BOOL finished) {
[self finishReceivingMessage];
}];
}
#pragma mark - UICollectionView DataSource