黑马程序员_一些有用的数据类型和NSString

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------


Cocoa提供的一些结构体

NSRange

typedef strust _NSRange
{
  unsigned int location;
  unsigned int length;
}NSRange;

这个结构体用来表示相关事物的范围,通常是字符串里的字符范围或者数组里的元素范围。Location字段存放该范围的起始位置而length字段则是该范围内所含元素的个数。location还可以用NSNotFound这个值来表示没有范围。

创建新的NSRange三种方式

//第一种方式
NSRange range;
range.location = 17;
range.length = 4;

//第二种方式
NSRange range = {17,4}

//第三种方式
NSRange range NSMakeRange(17,4)

使用NSMakeRange()的好处是可以在任何能够使用函数的地方使用它
[anObject flarbulateWithRange : NSMakeRange (13 ,15 )];

几何数据类型

CGPoint表示的是笛卡尔平面的坐标(x,y)

strust CGPoint
{
float x;
float y;
};

CGSize用来储存长度和宽度
strust CGSize
{
float width;
float height;
};

Cocoa提供了一个矩形数据类型,由坐标和大小复合而成
strust CGRect
{
CGPoint origin;
CGSize size;
}

Cocoa也提供了创建这些数据类型的快捷函数:CGPointMake()、CGSizeMake()和CGRectMake()。


NSString字符串

创建字符串

//第一种

NSString *str = @"string"

//第二种

 NSString *str = [[NSString alloc] init];
      str = @"string!";
      [str release];
//第三种
NSString *str = [[NSString alloc] initWithString:@"string!"];
    [str release];
//第四种

NSString *str;

str = [NSString stringWithFormat : @"Your age is %d",11]

关于大小

NSString中一个好用的方法(实例方法)是length,他返回的是字符串中字符的个数。

- (NSUInteger) length;

可以这样使用:

NSUInteger length = [str length];

也可以在表达式中使用它

if([str length] > 25)

{

NSLog(@"长度大于25");

}

大小写更变

三种方法的NSString类型的更改大小写:

1>lowercaseString:将改变成小写的字符串
2>uppercaseString:字符串将改为大写
3>capitalizedString:使用它,改变字符串的第一个字符变成大写
 NSString *string1 = @"ROSE INDIA";

    NSString *upperString = [[NSString alloc] initWithFormat:string1];

    NSString* changeString = [upperString lowercaseString];

    NSLog(@"%@",changeString);
//rose india


写入文件

NSString *str = @"123123123";
 // 如果文件不存在会自动创建一个
 // 如果文件夹不存在,会直接报错
 NSString *path = @"/Users/mac/Desktop/txt/3.txt";

 NSError *error;
 // YES代表要进行原子性操作,也就是会创建一个中间的临时文件
 // 编码指定错误也会报错
 [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
 if (error) {
        // [error localizedDescription]会返回主要的错误信息
        NSLog(@"写入失败:%@",[error localizedDescription]);
  }else{
        NSLog(@"写入成功");
  }

字符串比较

NSString提供了几个用于比较的方法:

isEqualToString: 可以用来比较接收方和作为参数传递过来的字符串。返回一个BOOL值来表示两个字符串的内容是否相同。

- (BOOL) isEqualTostring: (NSString *) aString;

NSString *thing1 = @“hello 5”;
NSString *thing2 = [NSString stringWithFormat:@“hello %d, 5”];

if([thing1 isEqualTostring: thing2])
{
NSLog(@“They are the same!”)
}

compare:将接收对象和传递过来的字符串逐个进行比较,他返回一个NSComparisonResult来显示比较结果。
- (NSComparisonResult) compare: (NSString *) aString;

enum
{
NSOrderedAscending = -1,
NSOrderedSame,
NSOrderedDescending
};
typedef NSInteger NSComparisonResult;

不区分大小写的比较

compare:option:

-(NSComparisonResult) compare: (NSString *) aString options: (NSStringCompareOptions)mark;

options参数是一位掩位码。可以使用位或者bitwide-OR运算符( | )来添加选项标记。常用选项如下:

1>NSCaseInsensitiveSearch: 不区分大小写字符

2>NSLiteralSearch:进行完全比较,区分大小写字符

3>NSNumericSearch:比较字符串的字符个数,而不是字符串值。

假如想比较字符串,需要忽略大小写并按字符个数进行排序,那可以:

if([thing1 compare: thing2 options: NSCareInsensitiveSearch|NSNumericSearch]==NSOrderedSame)
{
NSLog(@“”They match!”);
}

字符串内查找字符串

检查字符串是否以另一个字符串开头

-(BOOL)hasPrefix:(NSString *) aString;

判断字符串是否以另一个字符串结尾

-(BOOL)hasSuffix:(NSString *) aString;

查找字符串里某处字符串的位置

-(NSRange) rangeOfString: (NSString *) aString;


可变性

NSString是不可变的,意味着NSString一旦创建就不能改变,可以执行任何各种各样的操作,生成新字符串、查找字符串、与其他字符串比较,但是不能以删除字符或者添加字符的方式去改变它。Cocoa提供了一个NSString的子类,叫做NSMutableString。

创建新的NSMutableString

+(id) stringWithCapacity: (NSUInteger) capacity;

NSMutableString *str = [NSMutableString stingWithCapacity:42];


附加字符串

//appendString:接收参数aString并且将其复制到接收对象的末尾
-(void) appendString: (NSString *) aString;
//appendFormat:和stringWithFormat类似,但并没有创建新的字符串,而是将格式化的字符串附加在接收字符串的末尾
-(void) appendFormat: (NSString *) format,…;

-(void) deleteCharactersInRange:(NSRange) aRange;

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值