基礎語法(二)集合
1。NSArray / NSMutableArray:
NSArray *myArray = @[object1, object2, object3, 。。。];
__unused NSString *firstString = myArray[0];
p.s. __unused:巨集(macro),宣告一個物件但未使用時,compiler 不會報錯NSArray *immutableArray = @[object1, object2, object3, 。。。];
NSMutableArray *mutableArray = [ [ NSMutableArray alloc ] initWithArray : immutableArray ]; // 從不可變數組裡初始化
[mutableArray exchangeObjectAtIndex : 0 withObjectAtIndex:1 ] ; //互換
[mutableArray removeObjectAtIndex : 1 ] ; //刪除[mutableArray setObject : object1 atIndexedSubscript:0 ] ; //設定
2。NSDictionary / NSMutableDictionary:
NSDictionary *immutableDic = @{ @"first":object1, @"second":object2, @"third":object3, 。。。};
NSString *first = immutableDic[ @"first"];
NSMutableDictionary *mutableDic = [ [ NSMutableDictionary alloc ] initWithDictionary : immutableDic ] ;
mutableDic[@"first"] = objectN ; //可變字典,在初始化後可以更改
3。NSSet / NSMutableSet -無序集合,NSOrderedSet / NSMutableOrderedSet -有序集合
NSSet *immutableSet = [ [ NSSet alloc ] initWithObjects : object1, object2, object3, nil ] ;
NSMutableSet *mutableSet = [ NSMutableSet setWithSet : immutableSet ] ;
[ mutableSet addObject : object4 ] ;
[ mutableSet removeObject : object3 ] ;
p.s. 當 物件被重複加入set時,set只會取一次
NSSet *setOfNumbers = [ NSSet setWithArray : @[ @3, @4, @1, @10, @9] ] ; //無序列印,隨機顯示集合內的元素,即第0位不一定是3
NSOrderedSet *orderedSetOfNumbers = [ NSOrderedSet orderedSetWithArray : @[ @3, @4, @1, @10, @9] ] ; //有序列印,按集合內的元素順序顯示
NSMutableOrderedSet *mutableOrderedSet = [ NSMutableOrderedSet orderedSetWithArray : @[ @3, @4, @1, @10, @9] ] ;
[ mutableOrderedSet removeObject : @3 ] ;
[ mutableOrderedSet addObject : @0 ] ; // 在末尾加
[mutableOrderedSet exchangeObjectAtIndex : 1 withObjectAtIndex : 2 ] ;
4。NSCountedSet -可變,無序,集合內可以有重複物件,並可計算重複次數
NSCountedSet *setOfNumbers = [ NSCountedSet setWithObjects : @10, @20, @10, @10, @30, nil ] ;
[ setOfNumbers addObject : @20 ] ;
[ setOfNumbers removeObject: @10 ] ;
unsigned long = [ setOfNumbers countForObject : @10 ] ; // %lu : 2