Cocoa數據類型(NSString等)

Cocoa框架中的數據類型

1 NSRange:

typedef struct _NSRange{
    unsigned int location;
    unsigned int length;
}NSRange;
location:表示範圍的起始點
length:表示範圍中所含元素的個數
做用: 用以表示相關事物的範圍,如字符串中的字符範圍或者是數組中元素的範圍.

1.1 建立方式:

1.1.1 直接賦值

NSRnage range;
range.location = 0;
range.length = 4;

1.1.2 定義的同時進行初始化

NSRange range = {0,4};

1.1.3 使用Cocoa提供的 API NSMakeRange();來建立:

NSRange range = NSMakeRange(0,4);
使用NSMakeRange(location,length)來建立NSRange的好處是:能夠在任何能夠使用函數的地方使用它。
例如:[anObject flarbulateWithRange: NSMakeRange(0,4)];
相似於C++中的anObject.flarbulateWithRange(NSMakeRange(0,4));

2幾何數據類型:

typedef struct _NSPoint{
    float x;
    float y;
}NSPoint;
typedef struct _NSSize{
    float width;
    float height;
}NSSize;
typedef struct _NSRect{
    NSPoint origin;
    NSSize size;
}NSRect;
一樣Cocoa提供了便捷的函數來建立這些數據類型:分別爲:
NSMakePoint(); NSMakeSize();    NSMakeRect();

3 不可變字符串:NSString

NSString是不可變字符串,相似於java中的String;

3.1 格式化建立字符串,相似於CString.format();

eg:
    NSString *str = nil;
    str = [NSString stringWithFormat:@"Your age is %d",20];
    將會獲得一個字符串"Your age is 20";

註解: +(id)stringWithFormat:(NSString*)format,...;
上面是該函數的原型聲明,其中:
「+」表示該方法是一個類方法,即相似於java中用static修飾的方法
「...」表示該方法的參數列表是可變的,若有多個參數,用「,」隔開

3.2 獲取字符串的長度

NSString 提供了一個length方法用以獲取字符串的長度
函數原型:- (unsigned int)length;
eg: NSString* s;
    s = [NSString stringWithFormat:@"Hello Objective-C"];
    unsigned int len = [s length];

3.3 字符串的比較

3.3.1 比較是否相等

函數原型:- (BOOL) isEqualToString:(NSString*)aString;
使用方法:NSString *pStr1 = @"hello";
    NSString *pStr2 = @"hello world";
    BOOL isEqual = NO;
    isEqual = [pStr1 isEqualToString: pStr2];
    if(isEqual){
        NSLog(@"Equal");
    }else{
        NSLog(@"Not Equal");
    }
注意:
     不該該用"=="來判斷字符串是否相等,由於"=="判斷的是兩字符串指針是否指向同一個對象,而 isEqualToString判斷的是兩字符串指針所指向的內容是否相等。

3.3.2比較字符串大小:

函數原型: -(NSComparisonResult)compare:(NSString*)string;
其中:
typedef enum _NSComparisonResult{
    NSOrderedAscending = -1;
    NSOrderedSame;
    NSOrderedDescending;
}NSComparisonResult;
eg:     [@"abcdefg" compare @"gfedcba"] ==》 NSOrderedAscending
       [@"abc" compare @"abc"] ==> NSOrderedSame
    [@"football" compare @"ball"] ==> NSOrderedDescending

3.3.3 帶有附加選項的字符串比較:

函數原型:-(NSComparisonResult) compare:(NSString*)string
                options:(unsigned)mask;
其中:options參數是掩碼,用以控制compare的行爲:
其值:    NSCaseInsensitiveSearch:不區分大小寫字符
    NSLiteralSearch:區分大小寫,逐字符地進行比較
    NSNumericSearch:比較字符串的個數而不是字符值
eg:
    例如按字符串的個數且不區分大小寫地比較
    NSString* p=@"100"
    NSString* q=@"99"
    if([p compare:q options:NSCaseInsensitiveSearch|    NSNumericSearch]==NSOrderedDescending){
        NSLog(@"p bigger than q");
    }

3.4 字符串先後綴判斷

函數原型:-(BOOL) hasPrefix:(NSString*)aString;        //判斷前綴
    - (BOOL) hasSuffix:(NSString*) aString;        //判斷後綴
eg:
    NSString *fileName = @"draft-chapter.pages"
    //判斷是否以"draft"開頭
    if([fileName hasPrefix:@"draft"]){
        .....    
    }
    //判斷是否以"pages"結尾:
    if([fileName hasSuffix:@"pages"]){
        .....
    }

3.5 判斷字符串中是否包含指定的字符串

函數原型:- (NSRange)rangeOfString:(NSString*)aString;
eg:    NSRange range;
    range = [fileName rangeOfString:"draft"];
    if(range.start!=NSNotFound){
        NSLog(@"matched");
    }else{
        NSLog(@"not matched");
    }

3.6 分割字符字符串

函數原型:-(NSArray*)componentsJoinedByString:(NSString*)token;
eg:    NSString* src = @"www.dracode.com"
    NSArray* pArray = [src componentsSeparatedByString:@"."];
結果:    pArray = ["www","dracode","com"];


4可變字符串:NSMutableString:NSString

4.1 建立:

函數原型:+(id)stringWithCapacity:(unsigned)capacity;
eg:
    NSMutableString muStr = [NSMutableString stringWithCapacity:40];

4.2追加新的字符串

函數原型:-(id) appendString:(NSString*)aString;       -(id) appendFormat:(NSString*) format,...; eg:     NSMutableString str = [NSMutableString stringWithCapacity:20];     //往裏添加內容     [str appendString:@"Jack"];     [str appendString:@"Test"];     NSLog(@"str's length:%d",[str length]);     //找到刪除內容的範圍     NSRange range = [str rangeOfString:@"Test"];     //刪除     [str deleteCharactersInRange: range];     NSLog(@"str's length:%d",[str length]);
相關文章
相關標籤/搜索