Foudation框架常用结构体和常用类
表示范圍作用的結(jié)構(gòu)體:NSRange:??
???? 有三種方式創(chuàng)建新的NSRange:
1、NSRange range;?
?????????? range.location = 17;?
?????????? range.length = 4;?
???? 2、NSRange range = {17 ,4};?
???? 3、NSRange range = NSMakeRange(17,4); (推薦)
?
表示用來處理幾何圖形的數(shù)據(jù)類型:NSPoint(點坐標(biāo))和NSSize(長度和寬度)還有一個矩形數(shù)據(jù)類?
型(由點和大小復(fù)合而成)NSRect
Cocoa 提供創(chuàng)建這些數(shù)據(jù)類型方法:
NSMakePoint( )、
NSMakeSize()
NAMakeRect()
??
表示字符串的類NSString?
NSString *heigth =[NSString stringWithFormat : @"You heigth is %d feet,%d inches", 5,11];
創(chuàng)建的類對象包含了指向超類的指針、類名和指向類方法的列表的指針。類對象還包含一個long 的數(shù)據(jù), 為新創(chuàng)建的類對象指定大小。?
返回字符串中的字符的個數(shù):?
unsigned int length = [heigth length];
返回Bool 值的字符串比較函數(shù):?
- (BOOL) isEqualToString :(NSString *)aString;//比較兩個字符串的內(nèi)容是否相等
還可以使用compare :方法?
-(NSComparisonResult)compare :( NSString *)string;//逐個字符比較
不區(qū)分大小寫的比較:?
-(NSComparisonResult)compare :( NSString *)string options:( unsigned)mask;?
注意:NSComparisonResult 是一個枚舉值 options 是一個位掩碼,即:?
NSCaseInsensitiveSearch:不區(qū)分大小寫?
NSLiteralSearch: 進(jìn)行完全比較,區(qū)分大小寫?
NSNumericSearch: 比較字符串的字符個數(shù),而不是字符值
檢查字符串是否以另一個字符串開頭?
-(BOOL)hasPrefix : (NSString *)aString;
判斷字符串是否是以另一個字符串結(jié)尾?
-(BOOL)hasSuffix : (NSString *)aString;
如果你想知道字符串內(nèi)的某處是否包含其他字符串,使用rangeOfString : 方法?
-(NSRange)rangeOfString :( NSString *)aString;
NSString 是不可變的,NSMutableString 是可變的。用方法stringWithCapacity :來創(chuàng)建 NSMutableString *string = [NSMutableString stringWithCapacity :42];?
可以使用appendString :或appendFormat : 來附加新字符串:?
- (void) appendString :(NSString *)aString;?
- (void) appendFormat :(NSString *)format , . . . ;?
可以使用deleteCharactersInRange : 方法刪除字符串中的字符?
- (void) deleteCharactersInRange : (NSRange)range;
?
集合家族:?
NSArray:用來存儲對象的有序列表(任意類型的對象)?
限制:只能存儲Objective—C 的對象,不能存儲C 語言的基本數(shù)據(jù)類型(int、float、enum、struct、或者NSArray 中的隨機(jī)指針)。同時也不能存儲nil(對象的零值或NULL 值)
??
//創(chuàng)建一個新的NSArray
NSArray *array =[NSArray arrayWithObjects : @"one",@"two", nil];
??
//獲得包含的對象個數(shù)?
- (unsigned)count;
??
//獲得特定索引處的對象?
- (id)objectAtIndex :( unsigned int)index ;
??
切分?jǐn)?shù)組:?
使用componentsSeparatedByString : 來切分NSArray,?
NSString *string = @"oop : ack : bork : greeble : ponies" ;?
NSArray *chunks = [string componentsSeparatedByString : @":"];
使用componentsJoinedByString : 來合并NSArray 中的元素并創(chuàng)建字符串?
string = [chunks componentsJoinedByString :@":-)"] ;
NSArray 是不可變數(shù)組,數(shù)組中包含的對象是可以改變的,但是數(shù)組對象本身是不會改變的。
??
可變數(shù)組NSMutableArray 通過類方法arrayWithCapacity :來創(chuàng)建可變數(shù)組?
+ (id)arrayWithCapacity :( unsigned)numItems ;?
NSMutableArray *array = [NSMutableArray arrayWithCapacity : 17];
使用addObject : 在數(shù)組末尾添加對象?
- (void)addObject :( id)anObject
刪除特定索引的對象?
- (void)removeObjectAtIndex :( unsigned)index;
注:可變數(shù)組還可以在特定索引處插入對象,替換對象,為數(shù)組排序,NSArray 還提供了大量好用的功能。?
枚舉:?
NSEnumerator 用來描述這種集合迭代器運(yùn)算的方法:?
要想使用NSEnumerator,需要通過objectEnumerator 向數(shù)組請求枚舉器:?
- (NSEnumerator *) objectEnumerator;
可以像這樣使用這個方法:?
NSEnumerator *enumerator;?
enumerator = [array objectEnumerator ];
注:若想從后向前枚舉集合,使用方法reverseobjectEnumerator ; 也可以使用。?
獲得枚舉器以后,開始while 循環(huán),每次循環(huán)都向這個枚舉器請求它的nextObject?
- (id)nextObject;//返回nil 表明循環(huán)結(jié)束?
注:在枚舉的過程中不能改變數(shù)組容器。
快速枚舉示例:?
for(NSString *string in array){?
NSLog(@"I found %@", string);?
}
數(shù)組排序:?
例如:一條記錄就是一條卡片的信息,包括(NSString *name 和NSString *email)?
-(void)sort?
{?
[book sortUsingSelector:@selector(compareNames:)]?
}
其中:?
@selector(compareNames:)?
//創(chuàng)建一個SEL 類型的selector,sortUsingSelector:使用該方法比較數(shù)組中的兩個元素,?
sortUsingSelector:方法需要完成這樣的比較,它先調(diào)用這個指定的selector 方法,然后向數(shù)組(接受 者)的第一條記錄發(fā)送消息,比較其參數(shù)和此記錄。指定方法的返回值為NSComparisonResult 類型,返 回值為:若小于返回NSOrderedAscending;相等返回NSOrderedSame;大于返回NSOrderedDescending
??
-(NSComparisonResult)compareNames:(id)element?
{?
return [name compare:[element name]];?
}
NSDictionary:(關(guān)鍵字和定義的組合)?
NSDictionary 通常在給定一個關(guān)鍵字(通常是一個NSString 字符串)下存儲一個數(shù)值(可以是任何類 型的對象)。然后你可以使用這個關(guān)鍵字查找相應(yīng)的數(shù)值。
??
使用dictionaryWithObjectsAndKeys :來創(chuàng)建字典?
+ (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"];?
創(chuàng)建新的NSMutableDictionary 對象,向類NSMutableDictionary 發(fā)送dictionary 消息。也可以使用 dictionaryWithCapacity : 方法來創(chuàng)建新的可變字典
+ (id)dictionaryWithCapacity :(unsigned int)numItems ;?
可以使用方法setObject :forKey :方法給字典添加元素?
setObject : forKey :( id)aKey
下面是另一種使用發(fā)送dictionary 消息來創(chuàng)建字典的方法:?
NSMutableDictionary *tires;?
tires = [NSMutableDictionary dictionary] ;?
[tires setObject :t1 forKey :@"front-left"];?
. . .?
注:若對字典中已有的關(guān)鍵字使用setObject :forKey :方法,則用新的替換?
可以使用removeObjectForKey : 方法來刪除可變字典中的一個關(guān)鍵字?
- (void)removeObjectForKey :(id)aKey ;?
注:不要去創(chuàng)建NSString、NSArray 或NSDictionary 的子類,實在要的話可以用復(fù)合的方式來解決問題。
使用這種方法枚舉詞典:?
for(NSString *key in g)?
{?
. . .?
}
集合對象:?
Set 是一組單值對象的集合,有可變和不可變,操作包括:搜索、添加、刪除集合中的成員(僅用于可變集合)、比較兩個集合,計算兩個集合的交集和并集等。?
#import <Foundation/NSSet.h>?
常用的NSSet 方法
| 方法 | 說明 | 
| +(id)setWithObjects:obj1,obj2,...,nil | 使用一列對象創(chuàng)建新集合 | 
| -(id)initWithObjects:obj1,obj2,...,nil | 使用一列對象初始化新分配的集合 | 
| -(NSUInteger)count | 返回集合的成員個數(shù) | 
| -(BOOL)containsObject:obj | 確定集合是否包含obj | 
| -(BOOL)member:obj | 使用isEqual:方法確定集合是否包含obj | 
| -(NSEnumerator *)objectEnumerator | 為集合中的所有對象返回一個NSEnumerator 對象 ? | 
| -(BOOL)isSubsetOfSet:nsset | 確定receiver 的每個成員是否都出現(xiàn)在nsset 中 | 
| -(BOOL)intersectsSet:nsset | 確定是否receiver 中至少一個成員出現(xiàn)在對象nsset 中 | 
| -(BOOL)isEqualToSet:nsset | 確定兩個集合是否相等 | 
常用的NSMutableSet 方法(NSSet 的子類)
| 方法 | 說明 | 
| -(id)setWithCapacity:size | 創(chuàng)建新集合,使其具有存儲size 個成員的初始空間 | 
| -(id)initWithCapacity:size | 將新分配的集合設(shè)置為size 個成員的存儲空間 | 
| -(void)addObject:obj | 將對象obj 添加到集合中 | 
| -(void)removeObject:obj | 從集合中刪除對象obj | 
| -(void)removeAllObjects | 刪除接受者的所有成員 | 
| -(void)unionSet:nsset | 將對象nsset 的所有成員昂添加到接受者 | 
| -(void)minusSet:nsset | 從接受者中刪除nsset 的左右成員 | 
| -(void)intersectSet:nsset | 將接受者中的所有不屬于nsset 的元素刪除 | 
注:NSInteger 不是一個對象,基本數(shù)據(jù)類型的typedef,被typedef 成64 位的long 或32 位int 各種數(shù)值:
NSNumber:?
可以使用對象來封裝基本數(shù)值。
NSNumber 類來包裝基本數(shù)據(jù)類型。?
+ (NSNumber *)numberWithChar :( char)value ;?
+ (NSNumber *)numberWithInt :( int )value ;?
+ (NSNumber *)numberWithFloat :( float)value ;?
+ (NSNumber *)numberWithBool :( BOOL)value ;
還有包括無符號版本和各種long 型數(shù)據(jù)及l(fā)ong long 整型數(shù)據(jù)?
例如:NSNumber *number = [NSNumber numberWithInt : 42] ;
將一個基本類型封裝到NSNumber 后,可以使用下列方法重新獲得:?
方法說明?
+(id)setWithObjects:obj1,obj2,...,nil 使用一列對象創(chuàng)建新集合?
-(id)initWithObjects:obj1,obj2,...,nil 使用一列對象初始化新分配的集合?
-(NSUInteger)count 返回集合的成員個數(shù)?
-(BOOL)containsObject:obj 確定集合是否包含obj?
-(BOOL)member:obj 使用isEqual:方法確定集合是否包含obj?
-(NSEnumerator *)objectEnumerator 為集合中的所有對象返回一個?
NSEnumerator 對象?
-(BOOL)isSubsetOfSet:nsset 確定receiver 的每個成員是否都出現(xiàn)在?
nsset 中?
-(BOOL)intersectsSet:nsset 確定是否receiver 中至少一個成員出現(xiàn)?
在對象nsset 中?
-(BOOL)isEqualToSet:nsset 確定兩個集合是否相等?
方法說明?
-(id)setWithCapacity:size 創(chuàng)建新集合,使其具有存儲size 個成員的初始空間?
-(id)initWithCapacity:size 將新分配的集合設(shè)置為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 將結(jié)構(gòu)放入NSArray 和NSDictionary 中。?
創(chuàng)建新的NSValue:?
+(NSValue *)valueWithBytes : (const void *) value objCType : (const char *)type;
@encode 編譯器指令可以接受數(shù)據(jù)類型的名稱并為你生成合適的字符串。?
NSRect rect = NSMakeRect(1,2,30,40);?
NSValue * value ;?
value = [NSValue valueWithBytes : &rect objCType : @encode(NSRect)];
使用getValue :來提取數(shù)值(傳遞的是要存儲這個數(shù)值的變量的地址)(先找地址再取值)?
value = [array objectAtIndex : 0];?
[ value getValue : & rect ] ;
注:Cocoa 提供了將常用的struct 型數(shù)據(jù)轉(zhuǎn)化成NSValue 的便捷方法:?
+ (NSValue *)valueWithPoint :( NSPoint)point ;?
+ (NSValue *)valueWithSize :( NSSize)size;?
+ (NSValue *)valueWithRect :( NSRect)rect ;?
- (NSSize)sizeValue;?
- (NSRect)rectValue;?
- (NSPoint)pointValue;
NSNull:?
在關(guān)鍵字下如果屬性是NSNull 表明沒有這個屬性,沒有數(shù)值的話表明不知道是否有這個屬性。[NSNull null] //總返回一樣的值?
+ (NSNull *)null;?
例如:?
[contast setObject : [NSNull null] forKey: @"home"];?
訪問它:?
id home = [contast objectForKey : @"home" ] ;?
if ( home = = [NSNull null] ) {?
. . .?
}
NSFileManager 允許對文件系統(tǒng)進(jìn)行操作(創(chuàng)建目錄、刪除文件、移動文件或獲取文件信息)?
//創(chuàng)建一個屬于自己的NSFileManager 對象?
NSFileManager *manager = [NSFileManager defaultManager] ;?
//將代字符‘~’替換成主目錄?
NSString *home = [@"~" stringByExpandingTildeInPath] ;?
//輸出文件的擴(kuò)展名?
- (NSString *)pathExtension
轉(zhuǎn)載于:https://www.cnblogs.com/ranger-cc/p/3668448.html
總結(jié)
以上是生活随笔為你收集整理的Foudation框架常用结构体和常用类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: JS在火狐浏览器下如何关闭标签?
- 下一篇: JavaScript学习总结(三)——逻
