IOS之Objective-C學習筆記(六)


       今天繼續記錄我的學習過程,現在開始:

1.NSArray:是一個Cocoa類,用來存儲對象的有序列表,你可以在NSArray中放入任意類型的對象:NSString,Car,Shape,Tire或者其他對象。不過值得注意的是,它有兩個       限制,首先它只能存儲Objective-C的對象,而不能存儲C語言的基本類型數據,如int,float,enum,struct,或者NSArray中的隨機指針。同時也不能存儲nil。     

[plain] view plaincopy
  1.  (1)類方法arrayWithObjects ,創建一個新的NSArray:  
  2.               NSArray  *array;  
  3.               array  =  [ NSArray  arrayWithObjects : @"one", @"two", @"three", nil ];  
  4.  (2)-(unsigned) count 獲得數組所包含的對象個數   
  5.       -(id) objectAtIndex : (unsigned  int ) index 獲得特定引索處的對象  
  6.               int  i ;  
  7.               for ( i = 0; i < [ array count ]; i++){  
  8.                     NSLog (@"index %d has %@ ,", i , [ array objectAtIndex : i ] );  
  9.               }//輸出index 0 has one, index 1 has two, index 2 has three,在引索越界會報錯!  


2.可變數組NSMutableArray :     

[plain] view plaincopy
  1.  (1)+(id) arrayWithCapacity : (unsigned) numitems,創建新的可變數組:  
  2.              NSMutableArray  *array;  
  3.              array = [ NSMutableArray arrayWithCapacity : 17 ;]  
  4.  (2)-(void) addObject : (id) anObject在數組末尾添加對象;  
  5.  (3)-(void) removeObectAtIndex : (unsigned) index,可以通過它刪除特定引索處的對象:  
  6.              [ array  removeObjectAtIndex : 1 ];//值得注意的刪除了這個特定引索的對象時,數組中並沒有留下漏洞,被刪除對象后面的數組元素都被前移來填補空缺了。  

               

3.枚舉NSEnumerator:

[plain] view plaincopy
  1.  (1)-(NSEnumerator *) objectEnumerator 通過它可以向數組請求枚舉器: 
  2.              NSEnumerator *enumerator;  
  3.              enumerator = [ array objectEnumerator];  
  4.            //如果想從后向前瀏覽集合,還有一個方法reverseObjectEnumerator可以使用  
  5.  (2)-(id) nextObject: 向枚舉器請求它的下一個對象:  
  6.              NSEnumerator *enumerator;  
  7.              enumerator = [ array objectEnumerator];  
  8.              id  thingie;  
  9.              while (thingie  =  [ enumerator  nextObject ]){  
  10.                           NSLog (@" I found %@" , thingie);  
  11.              }//需要注意的是,對可變數組進行枚舉操作時,有一點需要注意,你不能通過添加或刪除對象這類方式來改變數組容器。  
  12.  (3)快速枚舉:  
  13.              for (NSString  *string in array){  
  14.                      NSLog (@"I found %@ ", string);  
  15.              }//這個循環體將會遍歷數組的每個元素,並用變量string存儲每個數組值,它比枚舉器語法更為簡潔。  


4.NSDictionary字典,它在給定一個關鍵字下存儲一個數值,然你可以通過這個關鍵字來查找相應的數值。       

[plain] view plaincopy
  1.  (1)+( id )dictionaryWithObjectAndKeys:      
  2.                     ( id )firstObject , .......; 該方法接受對象和關鍵字交替存儲的系列,以nil值作為終止符號。  
  3.               創建存儲輪胎的字典例子:  
  4.               NSDictionary  *tires;  
  5.               [ tires setObject : t1  forKey : @"front-left"];  
  6.               [ tires setObject : t2  forKey : @"front-right"];  
  7.               [ tires setObject : t3  forKey : @"back-left"];  
  8.              [ tires setObject : t4  forKey : @"back-right"];//如果對字典中已有的關鍵字使用setObject :forKey:,              那么這個方法將會用新值替換原有數值.  
  9.  (2)-(id)objectForKey : (id) aKey;通過鍵值獲取字典中對應的值  
  10.                Tire  *tire = [ tires objectForKey : @"back-right" ]; 
  11.   (3)+(id)dictionaryWithCapacity : (unsigned int) numitems;創建可變字典  
  12.  (4)-(void)removeObjectForKey : (id)aKey;通過鍵值刪除對應值  
  13.               [ tires  removeObjectForKey : @"back-left"];  


5.在使用NSString,NSArray,NSDictionary的時候,注意不要試圖去創建它們的子類。

6.NSNumber 用來包裝類用的:           

[plain] view plaincopy
  1.  (1)+(NSNumber *)numberWithChar : (char)value;  
  2.  (2)+(NSNumber *)numberWithInt : (int)value;  
  3.  (3)+(NSNumber *)numberWithFloat : (float)value;  
  4.  (4)+(NSNumber *)numberWithBool : (BOOL)value;//除了這些還有很多,這些是比較常用的,通過創建NSNumber后,可以把它放   入一個字典和數組中  
  5.            NSNumber *number;  
  6.            number = [ NSNumber numberWith : 42];  
  7.            [ array addObject : number ];//加進數組里  
  8.            [ dictionary  setObect : number   forKey : @"Bork"];//加入字典里 
  9.            通過以下方法可以重獲得它:  
  10.              -(char) charValue;  
  11.              -(int) intValue;  
  12.              -(float) floatValue;  
  13.              -(BOOL)boolValue;  
  14.              -(NSString *)stringValue;  
  15.            此外,可以用nuberWithFloat::創建的NSNumber可以用intValue來提取數值,NSNumber會對數據進行適當的轉換。  


7.NSValue,它是NSNumber的父類,它可以包裝任何值,可以用它來裝結構體。

[plain] view plaincopy
  1.  (1) *(NSValue *)valueWithBytes :(const void *)value  
  2.                        objCType : (const char *)type; 創建新的NSValue,參數一時你想要包裝的數值地址。  
  3.             例子:NSRect  rect = NSMakeRect(1,2,30,40);  
  4.                  NSValue * value;  
  5.                  value = [NSValue valueWithBytes :&rect  
  6.                  objCType : @encode(NSRect)]; //@encode編譯器指令可以接受數據的名稱並為你生成合適的字符串  
  7.                     [ array addObject : value ];  
  8.  (2)-(void)getValue : (void *) value;提取數值,例子: 
  9.                  value = [array objectAtIndex : 0];  
  10.                  [ value getValue : &rect ];//傳遞的是要存儲這個數值的變量地址  
  11.   (3)Cocoa提供餓將常用的strcut類型數據轉換成NSValue的便捷方法:  
  12.                  +(NSValue *)valueWithPoint : (NSPoint) point;  
  13.                  +(NSValue *)valueWithSize : (NSSize)size;  
  14.                  +(NSValue *)valueWithRect : (NSRect)rect;  
  15.                  -(NSPoint)pointValue;  
  16.                  -(NSSize)sizeValue;  
  17.                  -(NSRect)rectValue;//一下例子,在NSArray中存儲和檢索NSRect:  
  18.                   value = [ NSValue valueWithRect : rect ];  
  19.                   [ array addObject : value ];  
  20.                   NSRect  anotherRect = [ value rectValue ];  


8.NSNull類:只有一個方法:+(NSNull *)null;例子:[ contact setObject : [ NSNull null ]   forKey : @"home fax machine" ];

9.總結瀏覽集合的三種方式:(1)用數組的引索遍歷(2)用枚舉器(3)用快速枚舉

        好了,今天就寫到這里,后面繼續會有更新~轉載請注明:http://blog.csdn.net/yuzhiboyi



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com