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]);