Сравнение 8 свойств с 3 другими свойствами и установка соответствия NIL - PullRequest
1 голос
/ 05 октября 2011

У меня есть объект, называемый мозгом

Мозг имеет 8 свойств, которые содержат объект "Животное".

brain.animal1, brain.animal2, animal3, ... brain.animal8

Затем у меня есть три других свойства, которые называются

brain.selectedAnimal1, brain.selectedAnimal2, brain.selectedAnimal3

Что я хотел бы сделать, это просмотреть все 8 свойств животных... и если одно из этих свойств животного совпадает со свойством selectedAnimal1, я хочу установить для свойства животного значение nil.

Я хочу установить только для одного свойства животного значение nil (т. е. если два свойства животногосоответствовать свойству selectedAnimal1. Я хочу, чтобы первый из них был равен nil, а не обоим)

Затем я хочу сделать тот же цикл, но сравнить со свойствами selectedAnimal2 и selectedAnimal3 и установить для свойств животных значение nil, если они совпадают сВыделенный животный.

Может кто-нибудь помочь с этим?Я просто недостаточно хорош с целью-c, чтобы заставить это работать без написания около 50 строк кода

Итак, резюмируем ... Я начинаю с 8 свойств животных и хотел бы закончить с 5свойства животных (3 равны нулю)

Заранее спасибо,

1 Ответ

2 голосов
/ 05 октября 2011

Кажется очень негибким и не расширяемым, чтобы иметь animal1, animal2, ... и selectedAnimal1, selectedAnimal2, ...

Вы действительно должны изучить использование коллекций (NSMutableArray или NSMutableSet), скажемживотных и выбранных животных, затем вы можете перебирать объекты животных, используя быстрое перечисление:

for (Animal* animal in animals) {
    for (Animal* selectedAnimal in selectedAnimals) {
        /* Do checks */
    }
}

Если вы найдете животное, которое есть в обоих, вы можете удалить его из животных.Осторожно, не изменяйте изменяемый массив при его перечислении, вы получите сбои.Я думаю, что вы должны использовать NSMutableSet (который имеет объединение, минус операторы и т. Д., Что позволяет легко вычитать общие элементы из одного набора).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...