【发布时间】:2011-03-15 20:57:14
【问题描述】:
我有四种主要方法:
+ (NSArray *)findAll;
+ (NSArray *)findAllWithOrder:(NSArray *)order;
+ (NSArray *)findAllWithConditions:(NSDictionary *)conditions;
+ (NSArray *)findAllWithLimit:(NSRange)limit;
另外,我想组合这些方法(例如,我可以通过顺序和条件find all)。目前我正在做(即使参数顺序不同,这里也没有显示所有可能性):
+ (NSArray *)findAll;
+ (NSArray *)findAllWithOrder:(NSArray *)order;
+ (NSArray *)findAllWithConditions:(NSDictionary *)conditions;
+ (NSArray *)findAllWithLimit:(NSRange)limit;
+ (NSArray *)findAllWithOrder:(NSArray *)order conditions:(NSDictionary *)conditions;
+ (NSArray *)findAllWithOrder:(NSArray *)order limit:(NSRange)limit;
+ (NSArray *)findAllWithConditions:(NSDictionary *)conditions limit:(NSRange)limit;
+ (NSArray *)findAllWithOrder:(NSArray *)order conditions:(NSDictionary *)conditions limit:(NSRange)limit;
但是有没有比为此创建几十个方法更简单的方法呢?那肯定很不错。谢谢。
【问题讨论】:
-
是的——不要那样做。这不是跨框架的标准模式,并且有充分的理由。事实证明,维护所有这些变体是一件非常痛苦的事情。更改往往是全面的,您需要测试每个变体的每个变体。最好有少量的综合方法。
-
参见 NSFetchRequest。甚至不清楚您是否需要一个新类,或者使用 NSFetchRequest 的子类是否会更好。考虑到输入的复杂性,最好使用
Finder类,其实例可以根据需要进行配置。
标签: objective-c class methods