什么是将NSArray元素分配给适当对象的最佳方法?

时间:2013-10-01 21:45:09

标签: ios objective-c nsarray

如果我在NSArray中有以下3个类的对象,那么将数组元素分配给适当对象的最佳方法是什么?

@interface Simple : NSObject 
@interface Intermediate : Simple 
@interface Advanced : Simple

我想循环遍历NSArray,如果数组的第二个元素是Intermediate而第五个元素是Advanced,我想分别将它们分配给Intermediate和Advanced的变量。这允许我调用派生类中未在基类中定义的方法。

让我知道,如果有一个更好的解决方案,而不是让NSArray包含不同的对象(我仍然有兴趣知道原始问题的答案)!

2 个答案:

答案 0 :(得分:5)

您可以在使用isMemberOfClass:isKindOfClass:(更多关于差异here)进行循环时检查对象的类。

那说,如果 - 正如我怀疑的那样 - 这三个类共享共同的逻辑,为什么不只是创建一个共同祖先的SimpleIntermediateAdvance子类, - 比如说 - Difficulty,然后使用Difficulty类型的变量?

然后,无论子类如何,您都可以将数组中的任何对象分配给Difficulty变量。

答案 1 :(得分:0)

您可以通过以下方式轻松测试数组条目的类型:

id myObject = [myArray objectAtIndex:index];

if ([myObject isMemberOfClass:[Simple class]]) {
    //do something 
} else if ([myObject isMemberOfClass:[Intermediate class]]) {
    //do something 
} else if ([myObject isMemberOfClass:[Advanced class]]) {
    //do something 
}