mirror of
https://github.com/Instagram/IGListKit
synced 2026-05-22 08:48:21 +00:00
Summary: Removing the assert and handling `nil` section controllers. This wont effect Swift code which demands a non-optional section controller, but Objective-C is more nuanced. There is evidence that some callers do not have a default state and are returning `nil`. Unfortunately this will [OOB here](https://github.com/Instagram/IGListKit/blob/master/Source/Internal/IGListSectionMap.m#L63) if using the original `objects` array provided by the data source. Instead we prune the array, only allowing in objects that have a matching section controller. Fixes t15773862 internally. - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. Closes https://github.com/Instagram/IGListKit/pull/488 Reviewed By: dshahidehpour Differential Revision: D4553886 Pulled By: rnystrom fbshipit-source-id: a473a99b5eb513e4b610019dba0394a014193fc4
33 lines
921 B
Objective-C
33 lines
921 B
Objective-C
/**
|
|
* Copyright (c) 2016-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
#import "IGListTestAdapterDataSource.h"
|
|
|
|
#import <IGListKit/IGListAdapter.h>
|
|
|
|
#import "IGListTestSection.h"
|
|
|
|
@implementation IGListTestAdapterDataSource
|
|
|
|
- (NSArray *)objectsForListAdapter:(IGListAdapter *)listAdapter {
|
|
return self.objects;
|
|
}
|
|
|
|
- (IGListSectionController <IGListSectionType> *)listAdapter:(IGListAdapter *)listAdapter sectionControllerForObject:(id)object {
|
|
if ([object isKindOfClass:[NSNumber class]]) {
|
|
return [IGListTestSection new];
|
|
}
|
|
return nil;
|
|
}
|
|
|
|
- (nullable UIView *)emptyViewForListAdapter:(IGListAdapter *)listAdapter {
|
|
return self.backgroundView;
|
|
}
|
|
|
|
@end
|