mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
Rename the field again to nodeModel (#504)
* Rename the field to nodeModel * A few more instances * Fix method name
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
- Add -[ASDisplayNode detailedLayoutDescription] property to aid debugging. [Adlai Holler](https://github.com/Adlai-Holler) [#476](https://github.com/TextureGroup/Texture/pull/476)
|
||||
- Fix an issue that causes calculatedLayoutDidChange being called needlessly. [Huy Nguyen](https://github.com/nguyenhuy) [#490](https://github.com/TextureGroup/Texture/pull/490)
|
||||
- Negate iOS 11 automatic estimated table row heights. [Christian Selig](https://github.com/christianselig) [#485](https://github.com/TextureGroup/Texture/pull/485)
|
||||
- Rename ASCellNode.viewModel to ASCellNode.nodeViewModel to reduce collisions with subclass properties implemented by clients. [Adlai Holler](https://github.com/Adlai-Holler) [#499](https://github.com/TextureGroup/Texture/pull/499)
|
||||
- Rename ASCellNode.viewModel to ASCellNode.nodeModel to reduce collisions with subclass properties implemented by clients. [Adlai Holler](https://github.com/Adlai-Holler) [#504](https://github.com/TextureGroup/Texture/pull/504)
|
||||
- [Breaking] Add content offset bridging property to ASTableNode and ASCollectionNode. Deprecate related methods in ASTableView and ASCollectionView [Huy Nguyen](https://github.com/nguyenhuy) [#460](https://github.com/TextureGroup/Texture/pull/460)
|
||||
|
||||
##2.3.5
|
||||
|
||||
@@ -123,14 +123,14 @@ typedef NS_ENUM(NSUInteger, ASCellNodeVisibilityEvent) {
|
||||
*
|
||||
* This property may be set off the main thread, but this method will never be invoked concurrently on the
|
||||
*/
|
||||
@property (atomic, nullable) id nodeViewModel;
|
||||
@property (atomic, nullable) id nodeModel;
|
||||
|
||||
/**
|
||||
* Asks the node whether it can be updated to the given view model.
|
||||
* Asks the node whether it can be updated to the given node model.
|
||||
*
|
||||
* The default implementation returns YES if the class matches that of the current view-model.
|
||||
*/
|
||||
- (BOOL)canUpdateToViewModel:(id)viewModel;
|
||||
- (BOOL)canUpdateToNodeModel:(id)nodeModel;
|
||||
|
||||
/**
|
||||
* The backing view controller, or @c nil if the node wasn't initialized with backing view controller
|
||||
|
||||
@@ -170,9 +170,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)canUpdateToViewModel:(id)viewModel
|
||||
- (BOOL)canUpdateToNodeModel:(id)nodeModel
|
||||
{
|
||||
return [self.nodeViewModel class] == [viewModel class];
|
||||
return [self.nodeModel class] == [nodeModel class];
|
||||
}
|
||||
|
||||
- (NSIndexPath *)indexPath
|
||||
|
||||
@@ -433,15 +433,15 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
- (nullable __kindof ASCellNode *)nodeForItemAtIndexPath:(NSIndexPath *)indexPath AS_WARN_UNUSED_RESULT;
|
||||
|
||||
/**
|
||||
* Retrieves the view-model for the item at the given index path, if any.
|
||||
* Retrieves the node-model for the item at the given index path, if any.
|
||||
*
|
||||
* @param indexPath The index path of the requested item.
|
||||
*
|
||||
* @return The view-model for the given item, or @c nil if no item exists at the specified path or no view-model was provided.
|
||||
* @return The node-model for the given item, or @c nil if no item exists at the specified path or no node-model was provided.
|
||||
*
|
||||
* @warning This API is beta and subject to change. We'll try to provide an easy migration path.
|
||||
*/
|
||||
- (nullable id)viewModelForItemAtIndexPath:(NSIndexPath *)indexPath AS_WARN_UNUSED_RESULT;
|
||||
- (nullable id)nodeModelForItemAtIndexPath:(NSIndexPath *)indexPath AS_WARN_UNUSED_RESULT;
|
||||
|
||||
/**
|
||||
* Retrieve the index path for the item with the given node.
|
||||
@@ -537,7 +537,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
*
|
||||
* @return An object that contains all the data for this item.
|
||||
*/
|
||||
- (nullable id)collectionNode:(ASCollectionNode *)collectionNode viewModelForItemAtIndexPath:(NSIndexPath *)indexPath;
|
||||
- (nullable id)collectionNode:(ASCollectionNode *)collectionNode nodeModelForItemAtIndexPath:(NSIndexPath *)indexPath;
|
||||
|
||||
/**
|
||||
* Similar to -collectionNode:nodeForItemAtIndexPath:
|
||||
|
||||
@@ -624,10 +624,10 @@
|
||||
return [self.dataController.pendingMap elementForItemAtIndexPath:indexPath].node;
|
||||
}
|
||||
|
||||
- (id)viewModelForItemAtIndexPath:(NSIndexPath *)indexPath
|
||||
- (id)nodeModelForItemAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
[self reloadDataInitiallyIfNeeded];
|
||||
return [self.dataController.pendingMap elementForItemAtIndexPath:indexPath].viewModel;
|
||||
return [self.dataController.pendingMap elementForItemAtIndexPath:indexPath].nodeModel;
|
||||
}
|
||||
|
||||
- (NSIndexPath *)indexPathForNode:(ASCellNode *)cellNode
|
||||
|
||||
@@ -202,7 +202,7 @@ static NSString * const kReuseIdentifier = @"_ASCollectionReuseIdentifier";
|
||||
unsigned int collectionViewNumberOfItemsInSection:1;
|
||||
unsigned int collectionNodeNodeForItem:1;
|
||||
unsigned int collectionNodeNodeBlockForItem:1;
|
||||
unsigned int viewModelForItem:1;
|
||||
unsigned int nodeModelForItem:1;
|
||||
unsigned int collectionNodeNodeForSupplementaryElement:1;
|
||||
unsigned int collectionNodeNodeBlockForSupplementaryElement:1;
|
||||
unsigned int collectionNodeSupplementaryElementKindsInSection:1;
|
||||
@@ -431,7 +431,7 @@ static NSString * const kReuseIdentifier = @"_ASCollectionReuseIdentifier";
|
||||
_asyncDataSourceFlags.collectionNodeNodeForSupplementaryElement = [_asyncDataSource respondsToSelector:@selector(collectionNode:nodeForSupplementaryElementOfKind:atIndexPath:)];
|
||||
_asyncDataSourceFlags.collectionNodeNodeBlockForSupplementaryElement = [_asyncDataSource respondsToSelector:@selector(collectionNode:nodeBlockForSupplementaryElementOfKind:atIndexPath:)];
|
||||
_asyncDataSourceFlags.collectionNodeSupplementaryElementKindsInSection = [_asyncDataSource respondsToSelector:@selector(collectionNode:supplementaryElementKindsInSection:)];
|
||||
_asyncDataSourceFlags.viewModelForItem = [_asyncDataSource respondsToSelector:@selector(collectionNode:viewModelForItemAtIndexPath:)];
|
||||
_asyncDataSourceFlags.nodeModelForItem = [_asyncDataSource respondsToSelector:@selector(collectionNode:nodeModelForItemAtIndexPath:)];
|
||||
|
||||
_asyncDataSourceFlags.interop = [_asyncDataSource conformsToProtocol:@protocol(ASCollectionDataSourceInterop)];
|
||||
if (_asyncDataSourceFlags.interop) {
|
||||
@@ -1662,14 +1662,14 @@ minimumLineSpacingForSectionAtIndex:(NSInteger)section
|
||||
|
||||
#pragma mark - ASDataControllerSource
|
||||
|
||||
- (id)dataController:(ASDataController *)dataController viewModelForItemAtIndexPath:(NSIndexPath *)indexPath
|
||||
- (id)dataController:(ASDataController *)dataController nodeModelForItemAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
if (!_asyncDataSourceFlags.viewModelForItem) {
|
||||
if (!_asyncDataSourceFlags.nodeModelForItem) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
GET_COLLECTIONNODE_OR_RETURN(collectionNode, nil);
|
||||
return [_asyncDataSource collectionNode:collectionNode viewModelForItemAtIndexPath:indexPath];
|
||||
return [_asyncDataSource collectionNode:collectionNode nodeModelForItemAtIndexPath:indexPath];
|
||||
}
|
||||
|
||||
- (ASCellNodeBlock)dataController:(ASDataController *)dataController nodeBlockAtIndexPath:(NSIndexPath *)indexPath
|
||||
|
||||
@@ -1628,7 +1628,7 @@ static NSString * const kCellReuseIdentifier = @"_ASTableViewCell";
|
||||
|
||||
#pragma mark - ASDataControllerSource
|
||||
|
||||
- (id)dataController:(ASDataController *)dataController viewModelForItemAtIndexPath:(NSIndexPath *)indexPath
|
||||
- (id)dataController:(ASDataController *)dataController nodeModelForItemAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
// Not currently supported for tables. Will be added when the collection API stabilizes.
|
||||
return nil;
|
||||
|
||||
@@ -30,9 +30,9 @@ AS_SUBCLASSING_RESTRICTED
|
||||
@property (nonatomic, assign) ASSizeRange constrainedSize;
|
||||
@property (nonatomic, readonly, weak) id<ASRangeManagingNode> owningNode;
|
||||
@property (nonatomic, assign) ASPrimitiveTraitCollection traitCollection;
|
||||
@property (nonatomic, readonly, nullable) id viewModel;
|
||||
@property (nonatomic, readonly, nullable) id nodeModel;
|
||||
|
||||
- (instancetype)initWithViewModel:(nullable id)viewModel
|
||||
- (instancetype)initWithNodeModel:(nullable id)nodeModel
|
||||
nodeBlock:(ASCellNodeBlock)nodeBlock
|
||||
supplementaryElementKind:(nullable NSString *)supplementaryElementKind
|
||||
constrainedSize:(ASSizeRange)constrainedSize
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
ASCellNode *_node;
|
||||
}
|
||||
|
||||
- (instancetype)initWithViewModel:(id)viewModel
|
||||
- (instancetype)initWithNodeModel:(id)nodeModel
|
||||
nodeBlock:(ASCellNodeBlock)nodeBlock
|
||||
supplementaryElementKind:(NSString *)supplementaryElementKind
|
||||
constrainedSize:(ASSizeRange)constrainedSize
|
||||
@@ -41,7 +41,7 @@
|
||||
NSAssert(nodeBlock != nil, @"Node block must not be nil");
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_viewModel = viewModel;
|
||||
_nodeModel = nodeModel;
|
||||
_nodeBlock = nodeBlock;
|
||||
_supplementaryElementKind = [supplementaryElementKind copy];
|
||||
_constrainedSize = constrainedSize;
|
||||
@@ -64,7 +64,7 @@
|
||||
node.owningNode = _owningNode;
|
||||
node.collectionElement = self;
|
||||
ASTraitCollectionPropagateDown(node, _traitCollection);
|
||||
node.nodeViewModel = _viewModel;
|
||||
node.nodeModel = _nodeModel;
|
||||
_node = node;
|
||||
}
|
||||
return _node;
|
||||
|
||||
@@ -78,7 +78,7 @@ extern NSString * const ASCollectionInvalidUpdateException;
|
||||
*/
|
||||
- (BOOL)dataController:(ASDataController *)dataController presentedSizeForElement:(ASCollectionElement *)element matchesSize:(CGSize)size;
|
||||
|
||||
- (nullable id)dataController:(ASDataController *)dataController viewModelForItemAtIndexPath:(NSIndexPath *)indexPath;
|
||||
- (nullable id)dataController:(ASDataController *)dataController nodeModelForItemAtIndexPath:(NSIndexPath *)indexPath;
|
||||
|
||||
@optional
|
||||
|
||||
|
||||
@@ -330,18 +330,18 @@ typedef dispatch_block_t ASDataControllerCompletionBlock;
|
||||
id<ASRangeManagingNode> node = self.node;
|
||||
for (NSIndexPath *indexPath in indexPaths) {
|
||||
ASCellNodeBlock nodeBlock;
|
||||
id viewModel;
|
||||
id nodeModel;
|
||||
if (isRowKind) {
|
||||
viewModel = [dataSource dataController:self viewModelForItemAtIndexPath:indexPath];
|
||||
nodeModel = [dataSource dataController:self nodeModelForItemAtIndexPath:indexPath];
|
||||
|
||||
// Get the prior element and attempt to update the existing cell node.
|
||||
if (viewModel != nil && !changeSet.includesReloadData) {
|
||||
if (nodeModel != nil && !changeSet.includesReloadData) {
|
||||
NSIndexPath *oldIndexPath = [changeSet oldIndexPathForNewIndexPath:indexPath];
|
||||
if (oldIndexPath != nil) {
|
||||
ASCollectionElement *oldElement = [previousMap elementForItemAtIndexPath:oldIndexPath];
|
||||
ASCellNode *oldNode = oldElement.node;
|
||||
if ([oldNode canUpdateToViewModel:viewModel]) {
|
||||
// Just wrap the node in a block. The collection element will -setViewModel:
|
||||
if ([oldNode canUpdateToNodeModel:nodeModel]) {
|
||||
// Just wrap the node in a block. The collection element will -setNodeModel:
|
||||
nodeBlock = ^{
|
||||
return oldNode;
|
||||
};
|
||||
@@ -360,7 +360,7 @@ typedef dispatch_block_t ASDataControllerCompletionBlock;
|
||||
constrainedSize = [self constrainedSizeForNodeOfKind:kind atIndexPath:indexPath];
|
||||
}
|
||||
|
||||
ASCollectionElement *element = [[ASCollectionElement alloc] initWithViewModel:viewModel
|
||||
ASCollectionElement *element = [[ASCollectionElement alloc] initWithNodeModel:nodeModel
|
||||
nodeBlock:nodeBlock
|
||||
supplementaryElementKind:isRowKind ? nil : kind
|
||||
constrainedSize:constrainedSize
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
@end
|
||||
|
||||
@interface ASTestSection : NSObject <ASSectionContext>
|
||||
@property (nonatomic, readonly) NSMutableArray *viewModels;
|
||||
@property (nonatomic, readonly) NSMutableArray *nodeModels;
|
||||
@end
|
||||
|
||||
@implementation ASCollectionModernDataSourceTests {
|
||||
@@ -41,10 +41,10 @@
|
||||
// Default is 2 sections: 2 items in first, 1 item in second.
|
||||
sections = [NSMutableArray array];
|
||||
[sections addObject:[ASTestSection new]];
|
||||
[sections[0].viewModels addObject:[NSObject new]];
|
||||
[sections[0].viewModels addObject:[NSObject new]];
|
||||
[sections[0].nodeModels addObject:[NSObject new]];
|
||||
[sections[0].nodeModels addObject:[NSObject new]];
|
||||
[sections addObject:[ASTestSection new]];
|
||||
[sections[1].viewModels addObject:[NSObject new]];
|
||||
[sections[1].nodeModels addObject:[NSObject new]];
|
||||
window = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
|
||||
viewController = [[UIViewController alloc] init];
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
@selector(numberOfSectionsInCollectionNode:),
|
||||
@selector(collectionNode:numberOfItemsInSection:),
|
||||
@selector(collectionNode:nodeBlockForItemAtIndexPath:),
|
||||
@selector(collectionNode:viewModelForItemAtIndexPath:),
|
||||
@selector(collectionNode:nodeModelForItemAtIndexPath:),
|
||||
@selector(collectionNode:contextForSection:),
|
||||
nil];
|
||||
[mockDataSource setExpectationOrderMatters:YES];
|
||||
@@ -112,7 +112,7 @@
|
||||
skippedReloadIndexPaths:nil];
|
||||
}
|
||||
|
||||
- (void)testReloadingAnItemWithACompatibleViewModel
|
||||
- (void)testReloadingAnItemWithACompatibleNodeModel
|
||||
{
|
||||
[self loadInitialData];
|
||||
|
||||
@@ -120,15 +120,15 @@
|
||||
NSIndexPath *reloadedPath = [NSIndexPath indexPathForItem:1 inSection:0];
|
||||
NSIndexPath *deletedPath = [NSIndexPath indexPathForItem:0 inSection:0];
|
||||
|
||||
id viewModel = [NSObject new];
|
||||
id nodeModel = [NSObject new];
|
||||
|
||||
// Cell node should get -canUpdateToViewModel:
|
||||
// Cell node should get -canUpdateToNodeModel:
|
||||
id mockCellNode = [collectionNode nodeForItemAtIndexPath:reloadedPath];
|
||||
OCMExpect([mockCellNode canUpdateToViewModel:viewModel])
|
||||
OCMExpect([mockCellNode canUpdateToNodeModel:nodeModel])
|
||||
.andReturn(YES);
|
||||
|
||||
[self performUpdateReloadingSections:nil
|
||||
reloadingItems:@{ reloadedPath: viewModel }
|
||||
reloadingItems:@{ reloadedPath: nodeModel }
|
||||
reloadMappings:@{ reloadedPath: [NSIndexPath indexPathForItem:0 inSection:0] }
|
||||
insertingItems:nil
|
||||
deletingItems:@[ deletedPath ]
|
||||
@@ -168,12 +168,12 @@
|
||||
|
||||
// It reads the contents for each item.
|
||||
for (NSInteger section = 0; section < sections.count; section++) {
|
||||
NSArray *viewModels = sections[section].viewModels;
|
||||
NSArray *nodeModels = sections[section].nodeModels;
|
||||
|
||||
// For each item:
|
||||
for (NSInteger i = 0; i < viewModels.count; i++) {
|
||||
for (NSInteger i = 0; i < nodeModels.count; i++) {
|
||||
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:section];
|
||||
[self expectViewModelMethodForItemAtIndexPath:indexPath viewModel:viewModels[i]];
|
||||
[self expectNodeModelMethodForItemAtIndexPath:indexPath nodeModel:nodeModels[i]];
|
||||
[self expectNodeBlockMethodForItemAtIndexPath:indexPath];
|
||||
}
|
||||
}
|
||||
@@ -201,14 +201,14 @@
|
||||
// Note: Skip fast enumeration for readability.
|
||||
for (NSInteger section = 0; section < sections.count; section++) {
|
||||
OCMExpect([mockDataSource collectionNode:collectionNode numberOfItemsInSection:section])
|
||||
.andReturn(sections[section].viewModels.count);
|
||||
.andReturn(sections[section].nodeModels.count);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)expectViewModelMethodForItemAtIndexPath:(NSIndexPath *)indexPath viewModel:(id)viewModel
|
||||
- (void)expectNodeModelMethodForItemAtIndexPath:(NSIndexPath *)indexPath nodeModel:(id)nodeModel
|
||||
{
|
||||
OCMExpect([mockDataSource collectionNode:collectionNode viewModelForItemAtIndexPath:indexPath])
|
||||
.andReturn(viewModel);
|
||||
OCMExpect([mockDataSource collectionNode:collectionNode nodeModelForItemAtIndexPath:indexPath])
|
||||
.andReturn(nodeModel);
|
||||
}
|
||||
|
||||
- (void)expectContextMethodForSection:(NSInteger)section
|
||||
@@ -240,21 +240,21 @@
|
||||
|
||||
for (NSInteger section = 0; section < sections.count; section++) {
|
||||
ASTestSection *sectionObject = sections[section];
|
||||
NSArray *viewModels = sectionObject.viewModels;
|
||||
NSArray *nodeModels = sectionObject.nodeModels;
|
||||
|
||||
// Assert section object
|
||||
XCTAssertEqualObjects([collectionNode contextForSection:section], sectionObject);
|
||||
|
||||
// Assert item count
|
||||
XCTAssertEqual([collectionNode numberOfItemsInSection:section], viewModels.count);
|
||||
for (NSInteger item = 0; item < viewModels.count; item++) {
|
||||
// Assert view model
|
||||
XCTAssertEqual([collectionNode numberOfItemsInSection:section], nodeModels.count);
|
||||
for (NSInteger item = 0; item < nodeModels.count; item++) {
|
||||
// Assert node model
|
||||
// Could use pointer equality but the error message is less readable.
|
||||
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:section];
|
||||
id viewModel = viewModels[indexPath.item];
|
||||
XCTAssertEqualObjects(viewModel, [collectionNode viewModelForItemAtIndexPath:indexPath]);
|
||||
id nodeModel = nodeModels[indexPath.item];
|
||||
XCTAssertEqualObjects(nodeModel, [collectionNode nodeModelForItemAtIndexPath:indexPath]);
|
||||
ASCellNode *node = [collectionNode nodeForItemAtIndexPath:indexPath];
|
||||
XCTAssertEqualObjects(node.nodeViewModel, viewModel);
|
||||
XCTAssertEqualObjects(node.nodeModel, nodeModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -263,7 +263,7 @@
|
||||
* Updates the collection node, with expectations and assertions about the call-order and the correctness of the
|
||||
* new data. You should update the data source _before_ calling this method.
|
||||
*
|
||||
* skippedReloadIndexPaths are the old index paths for nodes that should use -canUpdateToViewModel: instead of being refetched.
|
||||
* skippedReloadIndexPaths are the old index paths for nodes that should use -canUpdateToNodeModel: instead of being refetched.
|
||||
*/
|
||||
- (void)performUpdateReloadingSections:(NSDictionary<NSNumber *, id> *)reloadedSections
|
||||
reloadingItems:(NSDictionary<NSIndexPath *, id> *)reloadedItems
|
||||
@@ -275,7 +275,7 @@
|
||||
[collectionNode performBatchUpdates:^{
|
||||
// First update our data source.
|
||||
[reloadedItems enumerateKeysAndObjectsUsingBlock:^(NSIndexPath * _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
|
||||
sections[key.section].viewModels[key.item] = obj;
|
||||
sections[key.section].nodeModels[key.item] = obj;
|
||||
}];
|
||||
[reloadedSections enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
|
||||
sections[key.integerValue] = obj;
|
||||
@@ -283,13 +283,13 @@
|
||||
|
||||
// Deletion paths, sorted descending
|
||||
for (NSIndexPath *indexPath in [deletedItems sortedArrayUsingSelector:@selector(compare:)].reverseObjectEnumerator) {
|
||||
[sections[indexPath.section].viewModels removeObjectAtIndex:indexPath.item];
|
||||
[sections[indexPath.section].nodeModels removeObjectAtIndex:indexPath.item];
|
||||
}
|
||||
|
||||
// Insertion paths, sorted ascending.
|
||||
NSArray *insertionsSortedAcending = [insertedItems.allKeys sortedArrayUsingSelector:@selector(compare:)];
|
||||
for (NSIndexPath *indexPath in insertionsSortedAcending) {
|
||||
[sections[indexPath.section].viewModels insertObject:insertedItems[indexPath] atIndex:indexPath.item];
|
||||
[sections[indexPath.section].nodeModels insertObject:insertedItems[indexPath] atIndex:indexPath.item];
|
||||
}
|
||||
|
||||
// Then update the collection node.
|
||||
@@ -314,10 +314,10 @@
|
||||
// Go through reloaded sections and add all their items into `insertsPlusReloads`
|
||||
[reloadedSectionIndexes enumerateIndexesUsingBlock:^(NSUInteger section, BOOL * _Nonnull stop) {
|
||||
[self expectContextMethodForSection:section];
|
||||
NSArray *viewModels = sections[section].viewModels;
|
||||
for (NSInteger i = 0; i < viewModels.count; i++) {
|
||||
NSArray *nodeModels = sections[section].nodeModels;
|
||||
for (NSInteger i = 0; i < nodeModels.count; i++) {
|
||||
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:section];
|
||||
insertsPlusReloads[indexPath] = viewModels[i];
|
||||
insertsPlusReloads[indexPath] = nodeModels[i];
|
||||
}
|
||||
}];
|
||||
|
||||
@@ -326,7 +326,7 @@
|
||||
}];
|
||||
|
||||
for (NSIndexPath *indexPath in [insertsPlusReloads.allKeys sortedArrayUsingSelector:@selector(compare:)]) {
|
||||
[self expectViewModelMethodForItemAtIndexPath:indexPath viewModel:insertsPlusReloads[indexPath]];
|
||||
[self expectNodeModelMethodForItemAtIndexPath:indexPath nodeModel:insertsPlusReloads[indexPath]];
|
||||
NSIndexPath *oldIndexPath = [reloadMappings allKeysForObject:indexPath].firstObject;
|
||||
BOOL isSkippedReload = oldIndexPath && [skippedReloadIndexPaths containsObject:oldIndexPath];
|
||||
if (!isSkippedReload) {
|
||||
@@ -335,7 +335,7 @@
|
||||
}
|
||||
} completion:nil];
|
||||
|
||||
// Assert that the counts and view models are all correct now.
|
||||
// Assert that the counts and node models are all correct now.
|
||||
[self assertCollectionNodeContent];
|
||||
}
|
||||
|
||||
@@ -345,9 +345,9 @@
|
||||
|
||||
@implementation ASTestCellNode
|
||||
|
||||
- (BOOL)canUpdateToViewModel:(id)viewModel
|
||||
- (BOOL)canUpdateToNodeModel:(id)nodeModel
|
||||
{
|
||||
// Our tests default to NO for migrating view models. We use OCMExpect to return YES when we specifically want to.
|
||||
// Our tests default to NO for migrating node models. We use OCMExpect to return YES when we specifically want to.
|
||||
return NO;
|
||||
}
|
||||
|
||||
@@ -360,7 +360,7 @@
|
||||
- (instancetype)init
|
||||
{
|
||||
if (self = [super init]) {
|
||||
_viewModels = [NSMutableArray array];
|
||||
_nodeModels = [NSMutableArray array];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user