在以前的博文中,咱們建立的項目文件的時候,默認都有引用#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、集合類型(NSArray和NSDictionary)
集合類型,就至關於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"];