OC中Foundation框架的结构体和字符串


Foundation框架中包含了很多开发中常用的数据类型,比如,结构体,字符串,集合类等,是其他iOS框架的基础。如果想要使用Foundation框架的数据类型,那么只要包含它的

头文件就可以了,即#import<Foundation/Foundation.h>


Foundation中常用的结构体:

在foundation框架中,常用的结构体有四种:

NSRange

NSPoint\CGpoint

NSSize\CGSize

NSRect\CGRect


NSRange: 表示范围(location   length)

NSRange的定义:位置和长度

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

NSRange的基本使用:
// @"i love oc"  //love的范围
    NSRange r1 = {2,4};  //可读性比较差,开发中一般不用
    NSRange r2 = {.location = 2, .length = 4};  //不用
    
    //实际开发中最常用的是使用Foundation自带的函数,如下:
    NSRange r3 = NSMakeRange(2, 4); //要求掌握
    
    //字符串创建最快的方式
    NSString *str = @"i love oc";
    
   //rangeOfString查找某个字符串的范围,查找love的范围
    //如果找不到,length= 0,location = NSNotFound == -1
    NSRange range = [str rangeOfString:@"love"];
    //打印出来
    NSLog(@"loc = %ld,length = %ld",range.location,range.length);

NSPoint\CGPoint:(表示坐标)

NSPoint和CGPoint是一样的,开发中经常用CGPoint

typedef CGPoint NSPoint;
struct CGPoint {
  CGFloat x;
  CGFloat y;      //CGFloat类型,实际就是double
};
typedef struct CGPoint CGPoint;
NSPoint\CGPoint的使用:

    //开发中CGPoint经常使用,因为他是跨平台的
    //创建结构体变量
    NSPoint p1 = CGPointMake(10, 10);    //最常用
    CGPoint p2 =  NSMakePoint(10, 10);

NSSize\CGSize:(表示UI元素的尺寸,宽度和高度)

用法基本和NSPoint一样

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

NSSize\CGSize的基本使用:

 //创建结构体变量
   NSSize s1 =  CGSizeMake(100, 50);
   NSSize s2 =  NSMakeSize(100, 50);
   CGSize s3 =  NSMakeSize(200, 100);

NSRect\CGRect:(表示一个UI元素的位置和尺寸       CGPoint   CGSize)

typedef CGRect NSRect;
struct CGRect {
  CGPoint origin;
  CGSize size;
};
typedef struct CGRect CGRect;

基本使用:

//创建结构体变量
    //方式一
    CGRect  r1 = CGRectMake(0, 0, 50, 100);
    //方式二
    CGRect r2 = {{0,0},{50,100}};
    //方式三
    CGRect r3 = {p1 ,s2};
    
    CGRect r4 = {CGPointZero,CGSizeMake(50, 100)};
    
   //表示原点,开发中经常用
    //CGPointZero ==CGPointMake(0, 0);
    
//    //常规的使用方式:
//    CGRect myRect(CGFloat x,CGFloat y,CGFloat width,CGFloat height)
//    {
//        CGRect rect;
//        rect.origin.x = x;
//        rect.origin.y = y;
//        rect.size.width = width;
//        rect.size.height = height;
//        
//        return  rect;
//    }
    //开发中经常是先把结构体转成字符串,然后再打印
    //结构体转换为字符串的方式,要求掌握
    
    //NSString *str =  NSStringFromPoint(p1);  //把坐标转换成字符串
    
    //NSString *str = NSStringFromSize(s3);  //吧尺寸转换成字符串
    
    NSString *str = NSStringFromRect(r1);   //把位置和尺寸转换成字符串的形式打印
     NSLog(@"%@",str);
   
    //尝试打印,此方式比较麻烦,开发中不使用
   // NSLog(@"x = %f,y = %f ,width = %f,height = %f ",r1.origin.x,r1.origin.y,r1.size.width,r1.size.height);


Foundation 框架中一些经常用到的结构体函数:

使用这些函数的前提是添加CoreGraphics框架

 //比较两个点的位置是否相同 (x 、y)
  BOOL b = <span style="color:#ff0000;"> CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));
    //比较两块区域是否相同]
    CGRectEqualToRect(<#CGRect rect1#>, <#CGRect rect2#>)
    //比较两个尺寸是否相同
   CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>)
    //判断这个点是否在区域范围内
    // x(50,100)  y(40,90)
    BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 1010, 50), CGPointMake(60, 40));
    
    NSLog(@"%d",b2);


 

NSString:

NSString :不可变字符串

NSMutableString :可变字符串

字符串的创建方式:

 //字符串的创建
    NSString *s1 = @"jack";
    
    NSString *s2 = [[NSString alloc]initWithString:@"jack"];  //几乎没人用
    
    NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d",10];
    
    //C字符串 --> OC字符串
    NSString *s4 = [[NSString alloc]initWithUTF8String:"jack"];
    
    // OC字符串 --> C字符串
    const char *cs = [s4 UTF8String];
    
    // NSUTF8StringEncoding 用到中文就可以用这种编码
    //  读取文件内容的方法
    NSString *s5 = [[NSString alloc]initWithContentsOfFile:@"/Users/mymac/Desktop/test/内存管理/总结.m" encoding:NSUTF8StringEncoding error:nil];
    
    NSLog(@"\n%@",s5);
    
    //URL :资源路径
    //协议头://路径
    //(本地文件)file://
    // ftp://
    //http://weibo.com/a.png
    
    //NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/mymac/Desktop/test/内存管理/总结.m"];
    
    NSURL *url = [NSURL fileURLWithPath:@"//Users/mymac/Desktop/test/内存管理/总结.m"];
    
    NSString *s6 =  [[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    
    NSLog(@"s6 = \n%@", s6);
    
    
    /*
     创建字符串的时候通常也有一些类方法
     一般都会有一个类方法跟对象方法配对,开发中经常使用类方法,很少使用对象方法,以节省时间
     [NSURL URLWithString:(NSString *)];
     
     [NSString stringWithFormat:@""];
     
     [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];
     */

字符串写到文件中的方式:

//字符串写到文件中的方法
   [@"jack\njack" writeToFile:@"/Users/mymac/Desktop/test/内存管理/总结.m "atomically:YES encoding:NSUTF8StringEncoding error:nil];
    
    NSString *str = @"rweudjkqsdjiw";
    
    NSURL *url = [NSURL fileURLWithPath:@"/Users/mymac/Desktop/test/内存管理/总结.m"];
    
    [str writeToFile:url atomically:YES encoding:NSUTF8StringEncoding error:nil];

可变字符串的使用:

 //可变字符串的创建
    NSMutableString *s1 = [NSMutableString stringWithFormat:@"age is 10"];
    
    //拼接内容到S1的后面
    [s1  appendFormat:@" 11 12"];
    
    //获取is的范围
    NSRange range = [s1 rangeOfString:@"is"];
    
    [s1 deleteCharactersInRange:range];  //删除
    
    NSString *s2 = [NSString stringWithFormat:@"age is 10"];
    
    NSLog(@"s1 = %@,s2 = %@",s1,s2);


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值