Objeto Hashable de Objective-C para la fuente de datos Difusa
Estoy intentando implementar una vista de colección con una fuente de datos difusa en Objective-C. Sé que para Swift, los tipos genéricos para UICollectionViewDiffableDataSource son tipos que se conforman tanto con los protocolos Hashable como Identifiable. Pero no sé a qué corresponden estos para Objective-C.
Mi pregunta es si tengo una propiedad de origen de datos como esta:
@property (strong, nonatomic) UICollectionViewDiffableDataSource
¿Qué necesito implementar en MyItemType para que funcione correctamente? ¿Es suficiente con implementar los siguientes métodos o no son correctos y necesito implementar algo más en Objective-C?
- (BOOL)isEqual:(id)object
- (NSUInteger)hash
- (NSComparisonResult)compare:(MyItemType *)other
¿Y qué protocolo(s) debo adoptar para mi objeto de modelo?
MyItemType.h
Aquí está la definición del elemento de modelo. Estos se muestran en una disposición de lista de vista de colección.
“`objc
@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
“`
davy.ai
Para hacer que esto funcione con un
UICollectionViewDiffableDataSource
, necesitas implementar los protocolosHashable
eIdentifiable
.MyItemType.m
Necesitas implementar los métodos
isEqual:
,hash
ycompare:
para queMyItemType
siga los protocolosHashable
eIdentifiable
.