Objective-C文法之集合對象的那些事兒
雨松MOMO原創文章如轉載,請註明:轉載至我的獨立網域名稱部落格雨松MOMO程式研究院,原文地址:http://www.xuanyusong.com/archives/425
集合對象的關鍵字是NSSet與NSMutableSet。前者是不可變集合,後者是可變集合,Objective-C語言中大部分資料結構都存在可變與不可變兩種資料。這裡的集合很像Java語言與C語言中的Set,用法基本一樣。但是在Objective-C語言中同一個集合可以儲存不同對象的資料。下面分享一個例子就很清楚的看出。
1. 建立不可變集合對象
[NSNumber numberWithInteger:9527]; 因為集合中只能存放對象,所以如果要存數位話要把數字轉換成對象方可存入。
[NSSet setWithObjects:...]:建立集合對象,並且初始化集合中的數值,結尾必需使用nil標誌。
[set count] ; 得到這個結合對象的長度。
[set containsObject:...]: 判斷這個集合中是否存在傳入的對象,返回Bool值。
[set objectEnumerator]: 將集合放入迭代器。
[enumerator nextObject]:得到迭代器中的下一個節點資料,使用while遍曆這個迭代器,方可遍曆集合對象中的對象。
[set isEqualToSet :objset]:判斷兩個集合是否完全相等
,
返回Bool值。
[
set isSubsetOfSet:objset
]:判斷集合中的所有資料是否都相等與objeset集合中,
返回Bool值。
[set istersectSet:
objset
]:
判斷集合中的至少有一個資料相等與objeset集合中,
返回Bool值。
#import <UIKit/UIKit.h>#import "MyClass.h"int main(int argc, char *argv[]){ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //添加我們的測試代碼 //建立集合 NSSet *set = [NSSet setWithObjects:@"雨松MOMO",@"15810463139",[NSNumber numberWithInteger: 9527], nil]; //集合的數量 int count = [set count]; NSLog(@"集合中的數量: %d",count); //檢測包含 NSString * str = @"雨松MOMO"; if ([set containsObject:str]) { NSLog(@"集合中包含 %@這個對象", str); } //迭代器遍曆 NSEnumerator *enumerator = [set objectEnumerator]; NSObject *object = [enumerator nextObject]; while (object != nil) { NSLog(@"迭代器遍曆集合中的資料: %@",object); object = [enumerator nextObject]; } //快速枚舉遍曆 for (NSObject *object in set) { NSLog(@"快速枚舉遍曆集合中的資料: %@",object); } int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal;}
2.建立可變集合對象
NSMutableSet 繼承NSSet ,所以可以使用父類的方法。
[NSMutableSet setWithCapacity:10]:建立可變集合對象,並且初始化長度為10。
[set addObject: obj] : 向集合中動態添加對象。
[set removeObject:obj]:刪除集合中的一個對象。
[set removeAllObjects]:刪除集合中的所有對象。
[set unionSet:obj]:向集合中添加一個obj集合的所有資料。
[set minusSet:obj]:向集合中刪除一個obj集合的所有資料。
[set intersectSet]:向集合中刪除一個不包含obj集合的所有資料。
#import <UIKit/UIKit.h>#import "MyClass.h"int main(int argc, char *argv[]){ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //添加我們的測試代碼 //建立集合 NSMutableSet *set = [NSMutableSet setWithCapacity:10]; //添加資料 [set addObject:@"雨松MOMO"]; [set addObject:[NSNumber numberWithInt:9527]]; //添加資料在刪除 NSString *str = @"刪除我"; [set addObject:str]; //刪除它 [set removeObject:str]; //快速枚舉遍曆 for (NSObject *object in set) { NSLog(@"快速枚舉遍曆集合中的資料: %@",object); } int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal;}
集合之美,不解釋!哇哢哢~ 晚安喔 !!!