Foudation框架經常使用結構體和經常使用類

表示範圍做用的結構體:NSRange:  
     有三種方式建立新的NSRange:
數組

一、NSRange range; 
           range.location = 17; 
           range.length = 4; 
     二、NSRange range = {17 ,4}; 
     三、NSRange range = NSMakeRange(17,4); (推薦)
app

 

表示用來處理幾何圖形的數據類型:NSPoint(點座標)和NSSize(長度和寬度)還有一個矩形數據類 
型(由點和大小複合而成)NSRect
函數


Cocoa 提供建立這些數據類型方法:oop

NSMakePoint( )、spa

NSMakeSize()指針

NAMakeRect()code

  
表示字符串的類NSString 
NSString *heigth =[NSString stringWithFormat : @"You heigth is %d feet,%d inches", 5,11];
component


建立的類對象包含了指向超類的指針、類名和指向類方法的列表的指針。類對象還包含一個long 的數據, 爲新建立的類對象指定大小。 
返回字符串中的字符的個數: 
unsigned int length = [heigth length];
orm


返回Bool 值的字符串比較函數: 
- (BOOL) isEqualToString :(NSString *)aString;//比較兩個字符串的內容是否相等
對象


還可使用compare :方法 
-(NSComparisonResult)compare :( NSString *)string;//逐個字符比較


不區分大小寫的比較: 
-(NSComparisonResult)compare :( NSString *)string options:( unsigned)mask; 

注意:NSComparisonResult 是一個枚舉值 options 是一個位掩碼,即: 
NSCaseInsensitiveSearch:不區分大小寫 
NSLiteralSearch: 進行徹底比較,區分大小寫 
NSNumericSearch: 比較字符串的字符個數,而不是字符值


檢查字符串是否以另外一個字符串開頭 
-(BOOL)hasPrefix : (NSString *)aString;


判斷字符串是不是以另外一個字符串結尾 
-(BOOL)hasSuffix : (NSString *)aString;


若是你想知道字符串內的某處是否包含其餘字符串,使用rangeOfString : 方法 
-(NSRange)rangeOfString :( NSString *)aString;


NSString 是不可變的,NSMutableString 是可變的。用方法stringWithCapacity :來建立 NSMutableString *string = [NSMutableString stringWithCapacity :42]; 
可使用appendString :或appendFormat : 來附加新字符串: 
- (void) appendString :(NSString *)aString; 
- (void) appendFormat :(NSString *)format , . . . ; 
可使用deleteCharactersInRange : 方法刪除字符串中的字符 
- (void) deleteCharactersInRange : (NSRange)range;

 


集合家族: 
NSArray:用來存儲對象的有序列表(任意類型的對象) 
限制:只能存儲Objective—C 的對象,不能存儲C 語言的基本數據類型(int、float、enum、struct、或者NSArray 中的隨機指針)。同時也不能存儲nil(對象的零值或NULL 值)

  
//建立一個新的NSArray

NSArray *array =[NSArray arrayWithObjects : @"one",@"two", nil];

  
//得到包含的對象個數 
- (unsigned)count;

  
//得到特定索引處的對象 
- (id)objectAtIndex :( unsigned int)index ;

  
切分數組: 
使用componentsSeparatedByString : 來切分NSArray, 
NSString *string = @"oop : ack : bork : greeble : ponies" ; 
NSArray *chunks = [string componentsSeparatedByString : @":"];


使用componentsJoinedByString : 來合併NSArray 中的元素並建立字符串 
string = [chunks componentsJoinedByString :@":-)"] ;


NSArray 是不可變數組,數組中包含的對象是能夠改變的,可是數組對象自己是不會改變的。

  
可變數組NSMutableArray 經過類方法arrayWithCapacity :來建立可變數組 
+ (id)arrayWithCapacity :( unsigned)numItems ; 
NSMutableArray *array = [NSMutableArray arrayWithCapacity : 17];


使用addObject : 在數組末尾添加對象 
- (void)addObject :( id)anObject


刪除特定索引的對象 
- (void)removeObjectAtIndex :( unsigned)index;


注:可變數組還能夠在特定索引處插入對象,替換對象,爲數組排序,NSArray 還提供了大量好用的功能。 
枚舉: 
NSEnumerator 用來描述這種集合迭代器運算的方法: 
要想使用NSEnumerator,須要經過objectEnumerator 向數組請求枚舉器: 
- (NSEnumerator *) objectEnumerator;


能夠像這樣使用這個方法: 
NSEnumerator *enumerator; 
enumerator = [array objectEnumerator ];


注:若想從後向前枚舉集合,使用方法reverseobjectEnumerator ; 也可使用。 
得到枚舉器之後,開始while 循環,每次循環都向這個枚舉器請求它的nextObject 
- (id)nextObject;//返回nil 代表循環結束 
注:在枚舉的過程當中不能改變數組容器。


快速枚舉示例: 
for(NSString *string in array){ 
NSLog(@"I found %@", string); 
}


數組排序: 
例如:一條記錄就是一條卡片的信息,包括(NSString *name 和NSString *email) 
-(void)sort 

[book sortUsingSelector:@selector(compareNames:)] 
}

其中: 
@selector(compareNames:) 
//建立一個SEL 類型的selector,sortUsingSelector:使用該方法比較數組中的兩個元素, 
sortUsingSelector:方法須要完成這樣的比較,它先調用這個指定的selector 方法,而後向數組(接受 者)的第一條記錄發送消息,比較其參數和此記錄。指定方法的返回值爲NSComparisonResult 類型,返 回值爲:若小於返回NSOrderedAscending;相等返回NSOrderedSame;大於返回NSOrderedDescending

  
-(NSComparisonResult)compareNames:(id)element 

return [name compare:[element name]]; 
}


NSDictionary:(關鍵字和定義的組合) 
NSDictionary 一般在給定一個關鍵字(一般是一個NSString 字符串)下存儲一個數值(能夠是任何類 型的對象)。而後你可使用這個關鍵字查找相應的數值。

  
使用dictionaryWithObjectsAndKeys :來建立字典 
+ (id)dictionaryWithObjectsAndKeys :( id)firstObject , . . .


例如: 
Tire *t1 = [Tire new]; 
NSDictionary *tires = [ NSDictionary dictionaryWithObjectsAndKeys :t1,@"front-left",nil];


使用方法objectForKey :來獲取字典中的值 
- (id)objectForKey :( id)akey;


查找輪胎能夠這樣: 
Tire *tire = [tires objectForkey : @"front-left"]; 
建立新的NSMutableDictionary 對象,向類NSMutableDictionary 發送dictionary 消息。也可使用 dictionaryWithCapacity : 方法來建立新的可變字典
+ (id)dictionaryWithCapacity :(unsigned int)numItems ; 
可使用方法setObject :forKey :方法給字典添加元素 
setObject : forKey :( id)aKey


下面是另外一種使用發送dictionary 消息來建立字典的方法: 
NSMutableDictionary *tires; 
tires = [NSMutableDictionary dictionary] ; 
[tires setObject :t1 forKey :@"front-left"]; 
. . . 
注:若對字典中已有的關鍵字使用setObject :forKey :方法,則用新的替換 
可使用removeObjectForKey : 方法來刪除可變字典中的一個關鍵字 
- (void)removeObjectForKey :(id)aKey ; 
注:不要去建立NSString、NSArray 或NSDictionary 的子類,實在要的話能夠用複合的方式來解決問題。


使用這種方法枚舉詞典: 
for(NSString *key in g) 

. . . 
}


集合對象: 
Set 是一組單值對象的集合,有可變和不可變,操做包括:搜索、添加、刪除集合中的成員(僅用於可變集合)、比較兩個集合,計算兩個集合的交集和並集等。 
#import <Foundation/NSSet.h> 
經常使用的NSSet 方法

方法

說明

+(id)setWithObjects:obj1,obj2,...,nil

使用一列對象建立新集合

-(id)initWithObjects:obj1,obj2,...,nil

使用一列對象初始化新分配的集合

-(NSUInteger)count

返回集合的成員個數

-(BOOL)containsObject:obj

肯定集合是否包含obj

-(BOOL)member:obj

使用isEqual:方法肯定集合是否包含obj

-(NSEnumerator *)objectEnumerator

爲集合中的全部對象返回一個NSEnumerator 對象

 

-(BOOL)isSubsetOfSet:nsset

肯定receiver 的每一個成員是否都出如今nsset 中

-(BOOL)intersectsSet:nsset

肯定是否receiver 中至少一個成員出如今對象nsset 中

-(BOOL)isEqualToSet:nsset

肯定兩個集合是否相等


經常使用的NSMutableSet 方法(NSSet 的子類)
方法 說明

-(id)setWithCapacity:size

建立新集合,使其具備存儲size 個成員的初始空間

-(id)initWithCapacity:size

將新分配的集合設置爲size 個成員的存儲空間

-(void)addObject:obj

將對象obj 添加到集合中

-(void)removeObject:obj

從集合中刪除對象obj

-(void)removeAllObjects

刪除接受者的全部成員

-(void)unionSet:nsset

將對象nsset 的全部成員昂添加到接受者

-(void)minusSet:nsset

從接受者中刪除nsset 的左右成員

-(void)intersectSet:nsset

將接受者中的全部不屬於nsset 的元素刪除


注:NSInteger 不是一個對象,基本數據類型的typedef,被typedef 成64 位的long 或32 位int 各類數值:
  
NSNumber: 
可使用對象來封裝基本數值。
  
NSNumber 類來包裝基本數據類型。 
+ (NSNumber *)numberWithChar :( char)value ; 
+ (NSNumber *)numberWithInt :( int )value ; 
+ (NSNumber *)numberWithFloat :( float)value ; 
+ (NSNumber *)numberWithBool :( BOOL)value ;
  
還有包括無符號版本和各類long 型數據及long long 整型數據 
例如:NSNumber *number = [NSNumber numberWithInt : 42] ;
  
將一個基本類型封裝到NSNumber 後,可使用下列方法從新得到: 
方法說明 
+(id)setWithObjects:obj1,obj2,...,nil 使用一列對象建立新集合 
-(id)initWithObjects:obj1,obj2,...,nil 使用一列對象初始化新分配的集合 
-(NSUInteger)count 返回集合的成員個數 
-(BOOL)containsObject:obj 肯定集合是否包含obj 
-(BOOL)member:obj 使用isEqual:方法肯定集合是否包含obj 
-(NSEnumerator *)objectEnumerator 爲集合中的全部對象返回一個 
NSEnumerator 對象 
-(BOOL)isSubsetOfSet:nsset 肯定receiver 的每一個成員是否都出如今 
nsset 中 
-(BOOL)intersectsSet:nsset 肯定是否receiver 中至少一個成員出現 
在對象nsset 中 
-(BOOL)isEqualToSet:nsset 肯定兩個集合是否相等 
方法說明 
-(id)setWithCapacity:size 建立新集合,使其具備存儲size 個成員的初始空間 
-(id)initWithCapacity:size 將新分配的集合設置爲size 個成員的存儲空間 
-(void)addObject:obj 將對象obj 添加到集合中 
-(void)removeObject:obj 從集合中刪除對象obj 
-(void)removeAllObjects 刪除接受者的全部成員 
-(void)unionSet:nsset 將對象nsset 的全部成員昂添加到接受者 
-(void)minusSet:nsset 從接受者中刪除nsset 的左右成員 
-(void)intersectSet:nsset 將接受者中的全部不屬於nsset 的元素刪除 
- (char)charValue; 
- (int)intValue; 
- (float)floatValue; 
- (BOOL)boolValue; 
- (NSString *)stringValue;
  
NSValue: 
NSNumber 其實是NSValue 的子類,NSValue 能夠封裝任意值。能夠用NSValue 將結構放入NSArray 和NSDictionary 中。 
建立新的NSValue: 
+(NSValue *)valueWithBytes : (const void *) value objCType : (const char *)type;

@encode 編譯器指令能夠接受數據類型的名稱併爲你生成合適的字符串。 
NSRect rect = NSMakeRect(1,2,30,40); 
NSValue * value ; 
value = [NSValue valueWithBytes : &rect objCType : @encode(NSRect)];
  
使用getValue :來提取數值(傳遞的是要存儲這個數值的變量的地址)(先找地址再取值) 
value = [array objectAtIndex : 0]; 
[ value getValue : & rect ] ;

注:Cocoa 提供了將經常使用的struct 型數據轉化成NSValue 的便捷方法: 
+ (NSValue *)valueWithPoint :( NSPoint)point ; 
+ (NSValue *)valueWithSize :( NSSize)size; 
+ (NSValue *)valueWithRect :( NSRect)rect ; 
- (NSSize)sizeValue; 
- (NSRect)rectValue; 
- (NSPoint)pointValue;

NSNull: 
在關鍵字下若是屬性是NSNull 代表沒有這個屬性,沒有數值的話代表不知道是否有這個屬性。[NSNull null] //總返回同樣的值 
+ (NSNull *)null; 
例如: 
[contast setObject : [NSNull null] forKey: @"home"]; 
訪問它: 
id home = [contast objectForKey : @"home" ] ; 
if ( home = = [NSNull null] ) { 
. . . 
}
NSFileManager 容許對文件系統進行操做(建立目錄、刪除文件、移動文件或獲取文件信息)  //建立一個屬於本身的NSFileManager 對象  NSFileManager *manager = [NSFileManager defaultManager] ;  //將代字符‘~’替換成主目錄  NSString *home = [@"~" stringByExpandingTildeInPath] ;  //輸出文件的擴展名  - (NSString *)pathExtension
相關文章
相關標籤/搜索