黑马程序员——09-Foundation框架之一

一、结构体

1NSRange

1)、类型定义

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange

注:NSUInteger即为 unsigned long 类型

简单示例:

用NSRange表示字符串@"i love oc"中 love的范围,location = 2 length = 4 

用NSRange表示数组{10,11,12,13,14}12,13,14的范围,location = 2 length = 3

 

2)、建立结构体

NSRange r1 = {2, 4}; 

NSRange r2 = {.location = 2, .length = 4};

以上方法不常用,经常调用函数MakeRange建立结构体

NSMakeRange(NSUInteger loc, NSUInteger len)

例如:

NSRange r3 = NSMakeRange (2, 4);

 

3)、结构体的使用示例

查找字符串lovestr中的范围,如果找不到,length=0location=NSNotFound==-1

NSString *str = @"i love oc";

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

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

 

2NSPoint/CGPoint

1)、类型定义

typedef CGPoint NSPoint;
struct CGPoint {
    CGFloat x;
    CGFloat y;
};
typedef struct CGPoint CGPoint;

注:

  •  NSPoint即为CGPoint,建议使用CGPoint
  •  CGFloat即为double类型

2)、建立结构体

CGPoint p1 = {10,10};

最常用的还是利用函数建立结构体

NSMakePoint(CGFloat x, CGFloat y)

CGPointMake(CGFloat x, CGFloat y)   // 最常用

示例:

    CGPoint p1 = NSMakePoint(10, 10);

    NSPoint p2 = CGPointMake(20, 20);// 最常用

    

原点表示CGPointZero

CGPointZero == CGPointMake(0, 0)

 

3NSSize/CGSize

1)类型定义

typedef struct _NSSize {
    CGFloat width;
    CGFloat height;
} NSSize;

2 )、建立结构体

相关函数

NSMakeSize (CGFloat w, CGFloat h)

CGSizeMake(CGFloat width, CGFloat height)

示例;

NSSize s1 = CGSizeMake(10, 15);

NSSize s2 = NSMakeSize(10, 15);

CGSize s3 = NSMakeSize(10,15);

CGSizeZero == CGSizeMake(0, 0)

 

4NSRect/CGRect

1)类型定义

typedef struct _NSRect {
    NSPoint origin;
    NSSize size;
} NSRect;

2 )、建立结构体

相关函数

CGRectMack(CGFloat x, CGFloat y, CGFloat width, CGFloat height)

CGMackRect (CGFloat x, CGFloat y, CGFloat w, GFloat h)

示例:

CGRect r1 = CGRectMake(0, 0, 10,15);

CGRect r2 = { {0, 0}, {10, 15}};

CGRect r3 = {p1, s2};

CGRect r4 = {CGPointZero, CGSizeMake(100, 90)};

CGRectZero

    

5、结构体转为字符串

一般输出结构体的成员变量是逐个输出,如

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

这种方法比较麻烦,所以将结构体转为字符串,输出字符串

    NSString *str = NSStringFromPoint(p1);

    NSString *str = NSStringFromSize(s3);

    NSString *str = NSStringFromRect(r1);

    NSLog(@"%@", str);

    

6、结构体常用函数

1CGPointEqualToPoint

比较两个点是否相同

 BOOL b1= CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));

同理还有

 CGRectEqualToRect(CGRect rect1, CGRect rect2)

 CGSizeEqualToSize(CGSize size1, CGSize size2)

 

2CGRectContainsPoint

判断点是否在矩形框中

BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45));

 

注:使用这些CGPointEqualToPointCGRectContainsPointCGPointZero等函数要添加CoreGraphics框架

 

二、字符串

1NSString : 不可变字符串

1)字符串的创建

    NSString *s1 = @"jack";

    NSString *s2 = [[NSString alloc] initWithString:@"jack"];

    NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];

    

2C/OC字符串转换

C语言字符串转为OC字符串

    NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];

    OC字符串转为C语言字符串

    const char *cs = [s4 UTF8String];

3)读取文件内容

方法一

NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/yang/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil]; 

方法二

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

NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

补充

NSUTF8StringEncoding :用到中文就可以用这种编码

    URL 表示资源路径,格式:协议头://路径

    协议头包括file://, ftp://

4)字符串的导出

  方法一

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

    方法二

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

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

2NSMutableString : 可变字符串,继承自NSString

常见使用示例

  •  创建可变字符串

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

  •  拼接内容到s1的后面

    [s1 appendString:@" 11 12"];

  •  删除制定字符串

    NSRange range = [s1 rangeOfString:@"is"]; // 获取is的范围

    [s1 deleteCharactersInRange:range];

  •  对比

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

    // 拷贝一份s2的内容,并将新内容拼接到后面赋给s3

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

      



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值