BKDeltaCalculator 1.1.2

BKDeltaCalculator 1.1.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2015年5月

James IdeAndrew Toulouse维护。



  • 作者
  • Andrew Toulouse

BKDeltaCalculator是一个轻量级的Objective-C库,可以将两个集合转换为更改集。这些更改可以应用于UITableView和UICollectionView实例的批量更新中,提供一种更声明性的方式来更新您的视图。

安装

BKDeltaCalculator通过CocoaPods提供。要安装它,只需将以下行添加到Podfile中。

pod "BKDeltaCalculator"

用法

BKDeltaCalculator比较两个数组,并计算它们之间的差分,该差分由BKDelta对象表示。这两个数组可能包含旧的和新的模型,例如要在表格视图或收集视图中显示的模型。

BKDeltaCalculator *calculator = [BKDeltaCalculator defaultCalculator];
BKDelta *delta = [calculator deltaFromOldArray:oldArray toNewArray:newArray];

表格和收集视图

当旧数组表示当前显示的单元格,新数组表示要显示的单元格时,您可以应用BKDelta到UITableView或UICollectionView。使用批量更新平滑地动画单元格。

// With a UITableView:
[tableView beginUpdates];
BKDelta *delta = [[BKDeltaCalculator defaultCalculator] deltaFromOldArray:_items toNewArray:newItems];
[delta applyUpdatesToTableView:tableView inSection:0 withRowAnimation:UITableViewRowAnimationFade];
_items = [newItems copy];
[tableView endUpdates];

// With a UICollectionView:
[collectionView performBatchUpdates:^{
  [delta applyUpdatesToCollectionView:collectionView inSection:0];
  _items = [newItems copy];
} completion:nil];

等性检查

默认情况下,BKDeltaCalculator使用严格等性检查来比较两个数组中的项目,这些检查比较对象标识符。您还可以提供自定义比较器

BKDeltaCalculator calculator = [BKDeltaCalculator deltaCalculatorWithEqualityTest:^(id a, id b) {
  return (a == b) || [a isEqual:b];
}];