2011-10-05 60 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(它有聯合,減運算符等等,使得從一組中減去常用元素變得容易)。