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