oxen 0.0.7

oxen 0.0.7

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2014年12月

Jackson Harper 维护。



oxen 0.0.7

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 相同的当前数组,它们不会单独更新以反映它们变化时后备数组的状态。这避免了额外的复制并确保了模型的一致性。

待办事项

  • [ ] 添加一个枚举以在 switch 语句中使用,代替 isKindOfClass
  • [ ] 实现快速枚举,简化批量更新以便使用单个 switch 处理所有项。