2014-11-27 4 views
-1

Я разместил аналогичный вопрос, но теперь у меня есть некоторые другие подзапросы.Создать массив из объектов из разных классов?

Итак, у меня есть класс Factory. Эта фабрика производит устройства (устройства класса). Класс Devices обладает некоторыми свойствами и имеет несколько подклассов: часы, смартфоны, компьютеры. Эта фабрика может производить 200 устройств.

self.factoryArray = [[NSMutableArray alloc]initWithCapacity:200]; 

Я хочу создать объекты из класса «Часы», «Смартфоны и компьютеры» и поместить их в этот массив. В классе Factory я быть_наст метод CreateDevice

- (void)createDevice { 
while (self.factoryArray.count < 200) { 

    Devices *device = [[Devices alloc]init]; 
    [self.factoryArray addObject:device]; 

    } 
} 

Теперь, как случайный образом связать каждое устройство (объект от factoryArray) для объекта класса Watch или смартфон или т.д ...

ответ

1

В Objective-C, класс объекта определяется в момент его создания и не может быть изменен позже. Поэтому вам нужно будет использовать генератор случайных чисел, чтобы решить, какой из ваших подклассов нужно создать, а затем сохранить в массиве. Что-то вроде:

while (self.factoryArray.count < 200) { 
    Device *device; 
    int r = arc4random() % 3; // or however many different classes you have 
    switch (r) { 
    case 0: 
     device = [[Watch alloc] init]; 
     break; 
    case 1: 
     device = [[Smartphone alloc] init]; 
     break; 
    // so on and so forth 
    } 
    [self.factoryArray addObject:device]; 
} 

Обратите внимание, что, поскольку все ваши классы устройств являются подклассами Device, вы можете назначить их в переменную типа Device * без ошибок.

Удачи вам!

+0

Большое спасибо, вы меня спасете :) Только одно. У меня есть ошибка в arc4random & 3 строка В ней указаны недопустимые операнды для двоичного выражения (u_int32_t (*) (void) и 'int') – Newbie

+1

он должен быть int r = arc4random()% 3; – Newbie

+1

Yup, извините, исправленный! – dpassage

Смежные вопросы