《objective-c基礎教程》學習筆記(九)—— Foundation框架介紹

  在以前的博文中,咱們建立的項目文件的時候,默認都有引用#import <Foundation/foundation.h> 這個頭文件。可是,以前咱們對Foundation都沒有展開介紹。這篇博文,咱們就揭開它神祕的面紗。數組

  以前,咱們有提到過OC使用的是Cocoa框架。那麼Cocoa和Foundation之間,有啥關聯呢?實際上,Cocoa是由許多個不一樣的框架組成的。最經常使用的是Foundation和Application Kit。app

  Foundation框架中有不少有用的、面向數據的簡單類和數據類型。是由許多類,方法,函數,文檔按照必定的邏輯組織起來的幾何。數據類型主要如:NSString,NSArray,NSNumber等,將近有100多個類,均可以在Xcode的安裝文檔中找到具體的使用方法。框架

  那麼,接下來,咱們就對幾個主要的類型的使用進行簡單的實例說明。

函數

1、字符串NSString類型)spa

  格式字符%@能夠顯示字符串,數組,字典和集合的所有內容。指針

  1. 字符串比較code

1 NSString *thing1 =@「hello 5」;
2 NSString *thing2 = [NSString stringWithFormat: @"hello %d",5];
3 if([thing1 isEqualToString: thing2])
4 {
5    NSLog(@"They are the same!");  
6 }

  這裏,咱們能夠看到。用到了兩個字符串的方法,stringWithFormat:是格式化字符串輸出。isEqualToString:是判斷兩個字符串是否相同。orm

那麼,isEqualToString和直接用「==」來判斷是否相同,有啥區別呢?對象

  用「==」運算符比較,只能判斷thing1和thing2的指針數值是否相同。而不能判斷是否指向同一個對象。因爲thing1和thing2是不一樣的字符串,全部這邊用這個運算符比較的話,會被認爲是不一樣的。blog

  2. 字符串的可變性

  在OC中,NSString類型是不可變的,即:一旦被建立,便不能變化。若是要對字符串進行改變的話,則在Cocoa中,提供了一個NSString的子類,叫NSMutableString

1 NSMutableString *string = [NSMutableString stringWithCapacity:50];
2 [string appendString: @"Hello "];
3 [string appendFormat: @"NSString %d", 2];

定義用的關鍵字:stringWithCapacity。運行結果等於string被兩次賦值,最後結果是:「Hello NSString 2」。

 

2、集合類型NSArrayNSDictionary

  集合類型,就至關於C語言中的數組。NSArray是一個Cocoa類,用來存儲對象的有序列表。只能存OC對象,而不能存C語言的基本數據類型。同時,也不能直接存nil(對象的NULL值)。

  1. 建立一個NSArray的格式:

1 NSArray *array1 = [NSArray arrayWithObjects: @"one", @"two", @"three", nil];

  這裏,咱們定義的集合有三個元素,最後面的nil並非一個元素,而是結束的標記符號。這也是爲何集合類型不能存nil的緣由。

只要是個集合,就有count獲取集合中元素的個數,index來獲取指定位置的元素。注意,獲取元素的index值不能大於集合總數count,不然會報錯!

for(NSInteger i=0; i< [array1 count]; i++)
{
    NSLog(@"index %d is %@", i, [array1 objectAtIndex: i]);
}

  2. 可變集合

  和NSString同樣,NSArray建立也是不可變對象,一旦建立就不能被修改。所以,集合類型也有子類型是能夠變的:NSMutableArray

和NSString同樣,定義可變集合也有配套的關鍵字:arrayWithCapacity

1 NSMutableArray *array = [NSMutableArray arrayWIthCapacity: 5];
2 for(NSInteger i=0; i<5; i++)
3 {
4     Tire *tire = [[Tire alloc] init];
5     [array addObject: tire];
6 }

  有add的添加方法,固然也有remove的刪除方法。若是,對集合中第二個元素不喜歡,則能夠:

1 [array removeObject: 1]; // 元素索引從0開始。

  3.NSDictionary類型

  看名字,顧名思義是字典類型,是關鍵字及其定義的集合。

定義字典類型對象的格式:

1 NSDictionary *tires = [NSDictionary dictionaryWithObjectsAndKeys: t1, @"tire1", t2, @"tire2", t3, @"tire3", nil]; // 也是用nil表示結束

字典類型還有一種建立方法:

1 NSMutableDictionary *tires = [NSMutableDictionary dictionary];
2 [tires setObject:t1 forKey:@"tire1"];
3 [tires setObject:t2 forKey:@"tire2"];
4 [tires setObject:t3 forKey:@"tire3"];

若是要刪除字典中的元素,能夠用:

1 [tires removeObjectForKey: @"tire1"];
相關文章
相關標籤/搜索