Objective-C 中的可观察集合
oxen 在集合修改时生成变更集。可观察集合的主要用例是将集合绑定到 UITableView 或 UICollectionView。
Oxen 变更集包括对集合做的变更类型和变更完成后集合的快照。这个快照应该被用作表格/集合视图的后备对象,并在更新过程中提供稳定的模型。
self.array.onCollectionChanged = ^(id<OXNChangeInfo> change) {
self.itemsArray = change.currentArray;
if ([change isKindOfClass:[OXNItemAddedChangeInfo class]]) {
[self.collectionView inserItemAtIndex:[NSIndexPath indexPathForItem:change.index inSection:1]];
}
... handle other cases
};
因为每个 oxen 变更都会创建后备数组的副本,因此鼓励用户批量更新。
[array performBatchUpdates:^{
[array insertObject:@"" atIndex:1];
[array removeObject:@"test"];
}];
当批量操作发生时,collectionChanged 块将被调用,包含可以枚举的 OXNBatchChangeInfo。
self.array.onCollectionChanged = ^(id<OXNChangeInfo> change) {
self.itemsArray = change.currentArray;
if ([change isKindOfClass:[OXNBatchChangeInfo class]]) {
for (id<OXNChangeInfo> change in change.changes) {
... handle each change
}
}
... handle other cases
};
批量操作中单个变更都指向与父 OXNBatchChangeInfo 相同的当前数组,它们不会单独更新以反映它们变化时后备数组的状态。这避免了额外的复制并确保了模型的一致性。
isKindOfClass
。