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


转载于:https://my.oschina.net/leojack/blog/91497

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值