Foundation框架—结构体、NSString

---Foundation框架:结构体:

 NSRange(location length)
 NSPoint\CGPoint
 NSSize\CGSize
 NSRect\CGRect (CGPoint CGSize)

1.NSRange

1>NSRange本质是结构体,里面有location和length两个成员,表示元素在数组中的范围,location表示起始元素的下标,length表示要包含的元素个数,这两个元素都是long int型的。

2> NSMakeRange函数可以用于创建NSRange对象。

NSRange r3 =NSMakeRange(2,4);

3>查找某个字符串在str中的范围,可以使用字符串的对象方法rangeOfString来获得。如:

    NSString *str = @"dogandcat";
    
    NSRange rang = [str rangeOfString:@"dca"];
    
    NSLog(@"%ld-----%ld",rang.location,rang.length); //输出结果:5-----3

4>如果使用rangeOfString找不到元素,则length的输出值是0,location的输出值是NSNotFound,NSNotFound转换成无符号整型是-1。

2.CGPoint\NSPoint

1>CGPoint\NSPoint本质是个结构体,一般用于表示点元素的坐标位置。CGPoint比较常用,它具有跨平台的特性。

2>创建CGPoint和NSPoint对象的方法是NSMakePoint和CGPointMake方法。开发中CGPointMake比较常用。如:

CGPoint p1 = NSMakePoint(10,10)/CGPointMake(10,10);

NSPoint p2 = NSMakePoint(20,20)/CGPointMake(20,20); 

3>比较两个点是否相同(x、y)

Bool b = CGPointEqualToPoint(CGPointMake(10,10),CGPointMake(10,10));

4>原点可以使用CGPointZero,相当于CGPointMake(0,0).(使用CGPointZero等的前提是添加CoreGraphics框架,在IOS开发中原点的位置是在左上角)

3.CGSize\NSSize

1>CGSize和NSSize表示一个用户界面元素的尺寸.

2>可以使用CGSizeMake和NSMakeSize方法创建CGSize和NSSize对象。如:

NSSize s1/CGSize s1= CGSizeMake(100,50)/NSMakeSize(100,50);//左面数值是宽,右面是高

3>比较两个Size是否相同

BOOL a = CGSizeEqualToSize(CGSize size1,CGSize size2);

4>CGSizeZero表示CGSizeMake(0,0),表示这个对象的上下尺寸都是0。

4.CGRect\NSRect(CGPoint CGSize)

1>CGRect和NSRect表示一个用户界面元素的位置和尺寸,它是CGPoint和CGSize的组合。

2>可以通过CGRectMake和NSMakeRect方法创建CGRect和NSRect对象。如:

CGRect r1 = CGRectMake(0,0,100,50);//表示其远点的位置和上下的尺寸

3>通过结构体成员变量打印CGRect的成员数值

CGRect r1 = CGRectMake(0,0,150,100);

NSLog(@"x=%f, y=%f, width=%f, height=%f", r1.origin.x, r1.origin.y, r1.size.width, r1.size.height);

4>创建CGRect对象的其它方式

CGRect r2 = {{0,0},{100,90}};

CGRect r3 = {p1,s2}; 

5>比较两个Rect是否相同

CGRectEqualToRect(CGRect rect1,CGRect rect2);

6>判断CGPoint中是在CGRect的范围中

BOOL b = CGRectContainsPoint(CGRect rect,CGPoint point);// 这个方法包含在CoreGraphics framework框架中

将结构体转为字符串的操作:

NSString *str = NSStringFromPoint(p1);

NSString *str = NSStringFromSize(s3);

NSString *str = NSStringFromRect(r1);

NSLog(@"%@", str);

在使用所有的CG靠头的文件的时候加上#import <CoreGraphics/CoreGraphics.h>
因为这些方法的声明都在Foundation框架里面但是定义都在CoreGraphics的框架里面


---NSString : 不可变字符串
             
1.字符串的创建:
    
 1>   NSString *s1 = @"jack";
    
 2> NSString *s2 = [[NSString alloc] initWithString:@"jack"];
    
 3> NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];//利用了组合字符串这个方法
    
 4> // C字符串 --> OC字符串
    NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];
    // OC字符串 --> C字符串
    const char *cs = [s4 UTF8String];

输出方式:NSLog(@"s1=%@, s2=%@", s1, s2);

2.加载文件内容和资源(看懂就可以)

//NSUTF8StringEncoding 用到中文就可以用这种编码
NSString *s5 = [[NSString alloc]
initWithContentsOfFile:@"/Users/apple/Desktop/1.txt"
encoding:NSUTF8StringEncoding error:nil]; 

NSString *s6 = [[NSString alloc] initWithContentsOfURL:urlencoding:NSUTF8StringEncoding
error:nil];比较常见

NSLog(@"s6=\n%@", s6)

其中的url可以根据想要传入的内容来赋值,它也是一个对象,如:

URL : 资源路径

协议头://路径

file://

ftp://

例如:NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"];

NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"]; 

 注意:一般都会有一个类方法跟对象方法配对

[NSURL URLWithString:<#(NSString*)#>];

[NSString stringWithFormat:@""];

[NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing
*)#>];

3.字符串的导出(看懂就可以)

将某个字符串写入一个文件夹

1> [@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];

其中的yes表示如果传入的过程中出现错误则撤销

2> NSString *str = @"4234234";

NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/my2.txt"];

[str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil]

它是可变字符串,也是NSSting的子类,可以在已经存在的字符串对象中添加新的字符。

---NSMutableString : 可变字符串(是NSSting的子类,可以用特定的方法对其创建的字符串进行一些特定的操作)

1>创建一个可变的字符串

NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];

2>拼接内容到s1的后面

[s1 appendString:@" 11 12"];

3>获取is的在s1中的范围

NSRange range = [s1 rangeOfString:@"is"];

4>把s1中的is删除(经常和上一行代码一起使用)

[s1 deleteCharactersInRange:range];

5>关于NSString的一些错误操作:(因为NSString是不可变的字符串)

NSString *s2 = [NSString stringWithFormat:@"age is 10"];//错误

NSString *s3 = [s2 stringByAppendingString:@" 11 12"];//错误


1、创建字符串

[objc] view plaincopy
NSString *str1 = @"我在学习OC";  
NSString *str2 = [[NSString alloc] initWithString: @"我在学习OC"];  
NSString *str3 = [NSString stringWithFormat: @"我在学习%@",@"OC"];  
NSString *str4 = [[NSString alloc] initWithUTF8String:"我在学习OC"];    // 由C字符串转换成OC字符串  

2、获取字符串长度
[objc] view plaincopy
NSUInteger length = str.length;  

3、获取字符串某个位置的字符
[objc] view plaincopy
unichar c = [str characterAtIndex:1]; // 索引从0开始  
4、截取字符串

[objc] view plaincopy
NSRang *rang = {1,2}; //location(索引开始的位置)、length(截取的长度);  
NSString *subString = [str substringWithRange:rang];  
5、获取子字符串在字符串中的索引位置和长度

[objc] view plaincopy
NSRange range = [str rangeOfString:subString]; // 如果未找到 返回{-1, 0}  
6、判断字符串内容是否相同

[objc] view plaincopy
BOOL isEqual = [str1 isEqualToString:str2]  
7、替换字符串中的子字符串为给定的字符串
[objc] view plaincopy
NSString * newStr = [str stringByReplacingOccurrencesOfString: @"a" withString: @"b"];  

NSMutableableString
1、追加字符串返回新字符串
[objc] view plaincopy
NSString *str = it  
NSString *newStr = [str stringByAppendingString: @“heima”];  
2、追加字符串

[objc] view plaincopy
NSMutableableString *mstr = [[NSMutableableString alloc] init];  
[mstr appendString: @“黑马”];  
3、在指定的索引位置插入字符串

[objc] view plaincopy
[mstr insertString: @“itheima” atIndex:2];  
4、删除指定范围的字符串
[objc] view plaincopy
NSRange range = {3,5};  
[mstr deleteCharactersInRange:rang];  





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值