首页 > 代码库 > 01-结构体NSRange、NSPoint、NSSize、NSRect、及NSString简介

01-结构体NSRange、NSPoint、NSSize、NSRect、及NSString简介

1.结构体

1>.NSRange(location, length) location这个位置开始计数长度为length

NSRange的创建方式:

NSRange r1 = {location, length};  // es:  NSRange r1 = {2, 4} 一般不这样写

NSRange r2 = {.location = 2, .length = 4// 一般也不这样写

NSRange r3 = NSMakeRange(2, 4);  // 必须掌握

es:查找某个字符串在str中的范围 如果找不到,length = 0location = NSNotFound==-1

NSString *str = @"whb love lap";

NSRange range = str rangeOfString:@"love"];

NSLog(@"location = %ld,length = %ld",range.location, range.length);

 

2>.NSPoint/CGPoint  // 点坐标 NSPoint/CGPoint这两个功能相同

CGPoint p1 = CGPointMake(11,25);   // 最常用

CGPoint p2 = NSMakePoint(11,25);

// 比较两个点是否相同

BOOL b = CGPointEqualToCGPoint(CGPointMake(11,05),CGPointMake(03,25));

 

3>.NSSize/CGSize // 长度,宽度

NSSize s1 = CGSizeMake(11,25);  // 长度为11,宽度为25的图形

NSSize s2 = NSMakeSize(11,25);

CGSize s3 = NSMakeSize(11.25);

 

4>.CGRect r = CGRectMake(CGPoint, CGSize);

CGRect r1 = NSRectMake(CGPointZero, CGSizeMake(11,25));

使用CGPointZero等的前提是添加CoreGraphics框架

//  表示原点

// CGPointZero == CGPointMake(0, 0)

 

// 判断点是否在矩形框内:

bool b2 = CGRectContainsPoint(CGRectMake(11,23,22,,33),CGPointMake(12,44));

 

转换成字符串:

NSString *str = NSStringFromPoint(p1);

········ *str = NSStringFromSize(s3);

········ *str = NSStringFromRect(r1);

 

2.NSString字符串的创建

1.  NSString *s1 = @"whblap"

2.  NSString *s2 = [[NSString alloc] initWithString:@"whb‘s age is 22"];

3.  NSString *s3 = [[NSString alloc] initWithFormat:@"whb‘s age is %d",22];

4.    C字符串 --> OC字符串

    NSString *s4 = [[NSString alloc] initWithUTF8String:"whb‘s age is 22"];

        OC字符串 --> C字符串

    const char *cs = [s4 UTF8String];

5.  NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/whblap/Desktop/document.m" encoding:NSUTF8StringEncoding error:nil]; // 遇到中文就可以用这种编码

6.使用路径创建字符串

// URL : 资源路径

// 协议头://路径

// file://

// ftp://

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

NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; // s6对象存放的字符串是1.txt里面的内容

PS:

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

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

[NSString stringWithFormat:@""];

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


 

3.字符串的导出,写入到文件

    [@"521号老妈生日,531号我家爱萍生日,whb记得给她过生日哦" writeToFile:@"/Users/whblap/Desktop/1.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];

 

NSString *str = @" whb 记得哦";

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

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

 


 

4.NSMutableString可变字符串

        NSString : 不可变字符串    NSMutableString : 可变字符串

    //?????? 查一下 如何将@“love” 插入到s1 符串中间第三个 有没这种方法

NSMutableString *s1 = [NSMutableString stringWithFormat:@"whb lap"];

[s1 appendString:@" !!! "]; // 拼接字符串到s1的后面

NSString *s2 = [s1 stringByAppendingString:@" !!!"]; // 功能同上