将8个属性与3个其他属性进行比较,并将匹配设置为NIL

时间:2011-10-05 13:38:31

标签: objective-c

我有一个名为brain

的对象

大脑有8个包含“动物”对象的属性。

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

然后我有三个名为

的其他属性

brain.selectedAnimal1,brain.selectedAnimal2,brain.selectedAnimal3

我想要做的是遍历所有8种动物属性......如果其中一种动物属性与selectedAnimal1属性匹配,我想将动物属性设置为nil。

我只想将一个动物属性设置为nil(即如果两个动物属性与selectedAnimal1属性匹配,我只希望第一个属性设置为nil,而不是两者都是)

然后我想做同样的循环,但要与selectedAnimal2和selectedAnimal3属性进行比较,如果它们与selectedAnimal匹配,则将动物属性设置为nil。

任何人都可以帮忙吗?我还没有足够好用Objective-c来实现这一点而不需要编写大约50行代码

所以回顾一下......我从8个动物属性开始,想以5个动物属性结束(3个被设置为零)

提前致谢,

1 个答案:

答案 0 :(得分:2)

使用animal1,animal2,...和selectedAnimal1,selectedAnimal2,......似乎非常灵活且不可扩展。

你应该真正研究使用集合(NSMutableArray或NSMutableSet),比如animals和selectedAnimals,然后你可以使用快速枚举来遍历你的动物对象:

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

如果你发现两只动物都可以从动物身上取下它。小心不要在枚举它时改变一个可变数组,你会崩溃。我认为你应该使用NSMutableSet(它有union,minus运算符等等,这样就可以很容易地从一个集合中减去公共元素)。