今天記錄一下學習Cocoa里有關里的Foundation框架。
1.首先Cocoa是由兩個不同的框架組成的:Foundation Kit和Application Kit,而Application Kit包含了所有的用戶接口對象和高級類,Foundation框架中則有很多有用的,面向數據的低級類和數據類型。
2.范圍的作用,看看一下結構體:
[plain] view plaincopy
- typedef struct _NSRange {
- unsigned int location;
- unsigned int length;
- }NSRange;//其中location表示字段存放該范圍的起始位置,length表示是該范圍內所含元素的個數。
例如:字符串”Objective-C is a cool language“中,單詞”cool“可以用loaction為17,length為4的范圍來表示。也許由於Locatio字段未被初始化,所以它 的值可以是NSNotFound,用來表示無意義范圍。
可以用3種方式創建新的NSRange:
[plain] view plaincopy
- (1)直接給字段賦值
- NSRange range:
- range.location = 17;
- range.length = 4;
- (2)應用C的聚合結構賦值機制
- NSRange range = {17,4};
- (3)使用Cocoa提供的一個快捷函數NSMakeRange();
- NSRange range = NSMakeRange(17,4);
3.幾何數據類型:
[plain] view plaincopy
- (1) NSPoint和NSSize,首先看看它們的結構體:
- typedef struct _NSPoint{
- float x ;
- float y;
- }NSPoint;
- typedef struct _NSSize{
- float width;
- float height;
- }NSSIze;
- (2)矩形類型NSRect
- typedef struct _NSRect{
- NSPoint origin;
- NSSize size;
- }NSRect;
- (3)它們也一樣有:創建數據類型的快捷函數,NSMakePoint(),NSMakeSize()和NSMakeRect().
4.字符串類型操作:
[plain] view plaincopy
[plain] view plaincopy
- (1)創建字符串,除了直接賦值創建NSString字符串外,還可以通過:stringWithFormat方法來通過
- 格式字符串和參數創建NSString的
- +(id) stringWithFormat : (NSString *)format, .........例子如下:
- NSString *height;
- height = [NSString stringWithFormat : @"Your height is %d feet,%d inches",5,11];
- 得到的字符串是“Your height is 5 feet, 11inches”.
- 這里需要注意的地方有兩個,第一就是這個方法后面的省略號,表示這個方法可以接收多個以逗
- 號隔開的其他參數,第二就是方法聲明的開頭是一個+號,它代表創建該類的類對象,我們把這
- 種方法叫做“工廠方法”。
- (2)獲得字符串大小:length,使用方法如下
- unsigned int length = [height length];
- 此方法可以准確無誤地處理國際字符串。如俄文,中文,日文等。
- (3)NSString字符串比較操作:
- 1.-(BOOL) isEqualToString: (NSString *)aString; 使用如下
- NSString *thing1 = @“hello 2”;
- NSString *thing2 ;
- thing2 = [NSString stringWithFormat : @"hello %d",5 ];
- if ([thing1 isEqualToString : thing2]){
- NSLog(@"They are the same!");
- }//注意此方法是比較字符串指針向的值,而“==”比較的是指針值。
- 2.-(NSComparisonResult)compare : (NSString *)string;
- 用法如下,首先先看看NSComparisonResult結構體:
- typedef enum _NSComparisonResult{
- NSOrderedAscending = -1;
- NSOrderedSame,
- NSOrderedDEscending
- }NSComparisonResult;
- 例子:[@"zoinks" compare : @"jinies"]將會返回NSOrderedDescending
- (表示左側的字符在右側字符的后面)
- 3.-(NSComparisonResult) compare : (NSString *)string
- options : (unsigned)mask;
- options參數是一個位掩碼,你可以使用位或運算符來添加選項標記。例子如下:
- if( [ thing1 compare : thing2
- options : NSCaseInsensitiveSearch | NSNumericSearch ]
- == NSOrderedSame)
- { NSLog (@"They match!") ; }
-
- (4)字符串內是否包含別的字符串
- 1 .-(BOOL)hasPrefix:(NSString *)aString;//檢查字符串是否以另一個字符串開頭
- -(BOOL)hasSuffix:(NSString *)aString;//檢查字符串是否以另一個字符串結尾
- -(NSRange)rangeOfString: (NSString *)aString ;//將rangeOfString:發送給一個
- NSString對象時,傳遞的參數是要查找的字符串,它會返回一個NSRange struct 來告訴你
- 與這個字符串相匹配的 部分在哪里以及能夠匹配上的字符串個數。
- 例子:NSRange range;
- NSString *filename = @"draft-chapter.pages";
- range = [fileName rangeOfString : @"chapter"];
- 返回的range.start為6,range.length為7.如果傳遞的參數在接收字符串中沒有找到,那
- range.start則等於NSNotFound。
5.可變性,NSString是不可變的,這並不意味着你不能操作它們。Cocoa提供了一個NSString的子類,叫做NSMutableString(可以改變的字符串)
[plain] view plaincopy
-
[plain] view plaincopy
- (1)-(id)stringWithCapacity: (unsigned)capacity; //注意這個容量只是給NSMutableString的一個建議。
- 例子:string = [NSMutableString stringWithCapcity : 42];
- (2)有了一個可變的字符串,那就可以對它執行各種操作了:
- 1.-(void)appendString : (NSString *)aString;
- 2.-(void)appendFormat : (NSString *)format , ......;
- 例子:NSMutableString *string;
- string = [NSMutableString stringWithCapacity: 50];
- [ string appendString : @"Hello there"];
- [ string appendFormat : @"human %d!",39 ];
- 這段代碼的運行結果是string被賦值為“Hello there human 39!”
- 3.-(void)deleteCharactersInRange : (NSRange) range;
- 我們經常會把deleteCharactersInRange:和rangeOfString:連在一起使用,例子:
- NSMuableString *friends;
- friends = [ NSMutableString stringWithCapacity: 50];
- [ friends appendString : @"JAmes BethLynn Jack Evan" ];
- 接下來,找到JAck的字符范圍:
- NSRange jackRange;
- jackRange = [friends rangeOfString: @"Jack"];
- jackRange.length++;//這句的意思是,把后面的空格也算上。
- [ friends deleteCharactersInRange : jackRange ];
- 結果為:“James BethLynn Evan”
好了,今天就寫到這里,繼續會有更新,轉載請注明:http://blog.csdn.net/yuzhiboyi