2011-10-05 64 views
1

我有称为脑比较8个属性与其他3个属性和设置匹配到NIL

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

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

我再有其他三个属性称为

brain.selectedAnimal1,brain.selectedAnimal2,brain.selectedAnimal3

我想要做的是循环所有8个动物的属性......如果其中一个动物属性与selectedAnimal1属性相匹配,我想将动物属性设置为零。

我只想设置一个动物属性为零(即如果两个动物属性的匹配selectedAnimal1财产我只想要第一个被设置成零,而不是两个)

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

任何人都可以帮忙吗?我只是没有足够好,但与objective-c得到这个工作,没有写约50行代码

所以回顾...我从8动物属性开始,并希望以5个动物属性结束(3被设置为无)提前

感谢,

回答

2

似乎非常不灵活的非延伸有animal1,animal2,......和selectedAnimal1,selectedAnimal2,...

你应该真的看看使用集合(NSMutableArray或NSMutableSet),说动物和selectedAnimals,然后你可以循环你动物o使用快速枚举的对象:

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

如果您发现两种动物都可以从动物身上移除。枚举它时请小心不要更改可变数组,否则会发生崩溃。我认为你应该使用NSMutableSet(它有联合,减运算符等等,使得从一组中减去常用元素变得容易)。