NSSet-不重覆內容的物件
NSArry保存的內容是依照順序來保存,然而NSDictionay不依照順序的保存所有值(Values)與鍵(Keys)的內容,然而NSSet保存過程中是以值為依據,不重方式覆保存內容,一旦已經有相同值時就不再保存其值(類似Java的Set),下面使用例子來了解一下NSSet:
//-----------start----------- NSSet* numbersSet = [NSSet setWithObjects:@"One",@"Two",@"Three",@"Four",@"Four",@"Four",nil]; NSLog( @"numbersSet: %@", numbersSet ); //------------end------------
輸出結果:
2014-09-16 23:26:37.464 NSSetTest1[7546:303] numbersSet: {( One, Three, Four, Two )}
輸出結果能了解到,其保存值不照順序,但值重覆時只保存一組。
增加物件
增加新的物件至NSSet需要使用method setByAddingObject
,但因為是不可變物件的關系,新增結果會再建立一個新的NSSet物件:
//-----------start----------- NSSet* moreSets = [numbersSet setByAddingObject:@"Five"]; NSLog( @"moreSets: %@", moreSets ); //------------end------------
輸出結果:
2014-09-16 23:26:37.466 NSSetTest1[7546:303] moreSets: {( Five, One, Three, Four, Two )}
判斷NSSet物件內容是否被包含
兩個NSSet物件我們能使用method isSubsetOfSet
來判斷所指定比對的NSSet內容是否與被包含期中:
//-----------start----------- NSSet* numbersSet = [NSSet setWithObjects:@"One",@"Two",@"Three",@"Four",@"Four",@"Four",nil]; NSLog( @"numbersSet: %@", numbersSet ); NSSet* numbersSet1 = [NSSet setWithObjects:@"One",@"Two",@"Three",@"Four1",nil]; NSLog( @"numbersSet1: %@", numbersSet1 ); NSSet* moreSets = [numbersSet setByAddingObject:@"Five"]; NSLog( @"moreSets: %@", moreSets ); if ([numbersSet isSubsetOfSet:moreSets]) NSLog( @"moreSets is a superset of numbersSet" ); else NSLog( @"moreSets is not a superset of numbersSet" ); if ([numbersSet1 isSubsetOfSet:moreSets]) NSLog( @"moreSets is a superset of numbersSet1" ); else NSLog( @"moreSets is not a superset of numbersSet1" ); //------------end------------
輸出結果:
2014-09-16 23:41:48.064 NSSetTest1[7794:303] numbersSet: {( One, Three, Four, Two )} 2014-09-16 23:41:48.066 NSSetTest1[7794:303] numbersSet1: {( One, Three, Four1, Two )} 2014-09-16 23:41:48.066 NSSetTest1[7794:303] moreSets: {( Five, One, Three, Four, Two )} 2014-09-16 23:41:48.066 NSSetTest1[7794:303] moreSets is a superset of numbersSet 2014-09-16 23:41:48.067 NSSetTest1[7794:303] moreSets is not a superset of numbersSet1
例子中利用moreSets使用method isSubsetOfSet
來查對numbersSet與numbersSet1的內容是不是被包含其中,由輸出結果得知,因為numbersSet1中有個值為Four1
與moreSets內容比對後,numbersSet1的內容不全然被包含。