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