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]);
相关文章
相关标签/搜索