【发布时间】:2015-06-10 14:44:53
【问题描述】:
我正在尝试执行NSCountedSet 但我需要忽略一个属性,我尝试覆盖我的对象的isEqual 方法,并手动比较所有属性,除了我想忽略但它不起作用
你知道如何实现它吗?
更新
我的班级
@interface GSOrderMenuMenuContent : GSBaseModel
@property (copy, nonatomic) NSNumber *order_content_id;
@property (copy, nonatomic) NSNumber *item_id;
@property (copy, nonatomic) NSNumber *price;
@property (copy, nonatomic) NSNumber *priceWithModifiers;
@property (copy, nonatomic) NSString *course;
@property (copy, nonatomic) NSString *itemName;
@property (nonatomic) GSMenuItem* item;
@property (nonatomic) NSMutableArray *modifiers;
@property (copy, nonatomic) NSNumber *isAlreadyPrinted;
@property (copy,nonatomic) NSNumber *isDeleted;
-(GSOrderMenuMenuContent*)deepCopy;
-(GSOrderContent*) orderContent;
-(BOOL)isEqual:(GSOrderMenuMenuContent*)object;
@end
用法:
NSCountedSet* countedSet = [[NSCountedSet alloc] initWithArray:contents];
其中 contents 是一个类对象数组
向isEqual 添加断点不会被调用(但是,如果执行[NSarray containsObject:...] 则会调用
【问题讨论】:
-
显示您的课程以及
NSCountedSet的一些示例用法。 -
好的,所以。您试图忽略的属性是什么?你对
isEqual的实现是什么?为什么你使用NSNumber对象而不是原始类型? -
用
isEqual:方法和hash方法的实现来更新你的问题(你也正确地实现了hash,对吧?)。 -
哦,我不知道哈希方法,我去看看
-
为什么
NSNumber属性定义为copy?没有任何意义,因为没有可变的NSNumber类可以分配给其中之一。
标签: ios objective-c nscountedset