Preserve ordering in incremental diffs.

This commit is contained in:
Matthew Chen 2018-11-05 08:58:22 -05:00
parent 5d6ff608c1
commit aa5e6b456e
1 changed files with 4 additions and 5 deletions

View File

@ -654,13 +654,12 @@ static const int kYapDatabaseRangeMinLength = 0;
NSSet<NSString *> *newItemIdSet = [NSSet setWithArray:newItemIdList];
// We use sets and dictionaries here to ensure perf.
NSMutableSet<NSString *> *deletedItemIdSet = [oldItemIdSet mutableCopy];
NSMutableOrderedSet<NSString *> *deletedItemIdSet = [NSMutableOrderedSet orderedSetWithArray:oldItemIdList];
[deletedItemIdSet minusSet:newItemIdSet];
NSMutableSet<NSString *> *insertedItemIdSet = [newItemIdSet mutableCopy];
NSMutableOrderedSet<NSString *> *insertedItemIdSet = [NSMutableOrderedSet orderedSetWithArray:newItemIdList];
[insertedItemIdSet minusSet:oldItemIdSet];
NSArray<NSString *> *deletedItemIdList = [deletedItemIdSet.allObjects sortedArrayUsingSelector:@selector(compare:)];
NSArray<NSString *> *insertedItemIdList =
[insertedItemIdSet.allObjects sortedArrayUsingSelector:@selector(compare:)];
NSArray<NSString *> *deletedItemIdList = [deletedItemIdSet.array copy];
NSArray<NSString *> *insertedItemIdList = [insertedItemIdSet.array copy];
// Try to generate a series of "update items" that safely transform
// the "old item list" into the "new item list".