我正在尝试在 Objective C 中实现一个带有可区分数据源的集合视图。我知道对于 Swift,UICollectionViewDiffableDataSource 的泛型类型是同时符合 Hashable 和 Identifiable 协议的类型。但我不知道这些对应于Objective C。
所以我的问题是我是否有这样的数据源属性:
@property (strong, nonatomic) UICollectionViewDiffableDataSource<NSString *, MyItemType *> *dataSource;
那么我需要实施什么MyItemType
才能使其正常工作?仅实现以下方法是否足够,或者这些方法不正确,我需要为 Objective C 实现其他方法?
- (BOOL)isEqual:(id)object
- (NSUInteger)hash
- (NSComparisonResult)compare:(MyItemType *)other
我需要为我的模型对象采用什么协议?
我的项目类型.h
这是模型项的定义。这些显示在集合视图列表布局中。
@interface MyItemType : NSObject
@property (strong, nonatomic) NSString *title;
@property (strong, nonatomic, nullable) NSString *subtitle;
@property (strong, nonatomic, nullable) NSArray<MyItemType *> *children;
@property (strong, nonatomic, nullable) UIImage *image;
@end