从头开始-07.Foundation框架常用结构体

一、Foundation框架常用结构体NSRange\CGRange、NSPoint\CGPoint、NSSize\CGSize、 NSRect\CGRect 的使用

 1.  基本使用:

  //NSRange的使用

    NSRange r1 = NSMakeRange(2, 4);  //第一个参数为.location 第二个参数为.length

    

    NSString *str = @"学习OC";

    

    NSRange range = [str rangeOfString:@"学习"];  //查找某个字符串在str字符串中的位置和长度

    

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

    

    NSRange range1 = [str rangeOfString:@"找不到"];  //查找某个字符串在str字符串中的位置和长度

    

    NSLog(@"loc = %d, len = %ld",range1.location, range1.length);  //如果找不到,location 的返回值为-1,要用%d输出location 的值才会有负号,默认的%ld是没有符号

    

  

    

    //CGPoint的使用

    CGPoint point1 = NSMakePoint(10, 10);

    NSPoint point2 = CGPointMake(10, 10); //平常经常使用这种方法定义一个CGPoint 对象

    

    

    //NSSzie的使用

    NSSize size1 = CGSizeMake(10, 20);

    CGSize size2 = NSMakeSize(10, 20);

    

    

    //CGRect 的使用

    CGRect rect1 = CGRectMake(0, 0, 50, 50);

    CGRect rect2 = {point1, size1};

    

    

    //打印结构体的方法

    NSString *s = NSStringFromPoint(point1);

    NSLog(@"%@",s);

    

    NSString *s1 = NSStringFromRect(rect1);

    NSLog(@"%@",s1);

2. 相关的其他方法

//判断结构体NSPoint\CGPoint、NSSize\CGSize、 NSRect\CGRect 包含的值是否相同的方法

    CGPointEqualToPoint(point1, point2);

    CGRectEqualToRect(rect1, rect2);

    CGRectEqualToRect(rect1, rect2);

    

    //判断某个rect是否包含某个点,必须引用框架CoreGraphic.framework,这样才能调用 CGRectContainsPoint方法

    BOOL b1 = CGRectContainsPoint(rect1, point1);

    NSLog(@"%d",b1);

    return 0;

二、Foundation框架常用类

1.NSString

    //创建字符串

    NSString *s1 = @"test";

    NSString *s2 = [[NSString alloc]initWithFormat:@"test is %c",'c'];

    

    //此方法可以将c语言字符串转化为OC字符串

    NSString *s3 = [[NSString alloc]initWithUTF8String:"name"];

    

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

    const char *cs = [s3 UTF8String];

    

    NSString *s4 = [[NSString alloc] initWithContentsOfFile:@"/Users/lpmac/Desktop/my.text" encoding:NSUTF8StringEncoding error:nil];

    [NSString stringWithContentsOfFile:@"/Users/lpmac/Desktop/my.text" encoding:NSUTF8StringEncoding error:nil];

    

    

    

    NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/lpmac/Desktop/my.text"];

    //类方法

    [NSURL URLWithString:@"file:///Users/lpmac/Desktop/my.text"];



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

     //类方法

    [NSString stringWithContentsOfFile:@"file:///Users/lpmac/Desktop/my.text" encoding:NSUTF8StringEncoding error:nil];

    NSLog(@"%@",s5);

2.NSMutableString的使用(动态字符串)

    NSMutableString * mutableString1 = [NSMutableString stringWithFormat:@"test"];

    //拼接字符串

    [mutableString1 appendString:@"append str"];

    

    //删除

    NSRange range = [mutableString1 rangeOfString:@"test"];

    [mutableString1 deleteCharactersInRange:range];

    NSLog(@"%@",mutableString1);

3.NSArray 和 NSMutableArray

  

    //数组的创建

    NSArray *array = [NSArray arrayWithObject:@"test"];

    NSArray *array1 = [NSArray arrayWithObjects:@"test1",@"test2",@"test2",nil];

    NSArray *array2 = @[@"test1",@"test2",@"test2"]; //提倡快速写法

    

    //数组访问

    [array1 objectAtIndex:0];

    array1[0]; //提倡

    

    //数组的遍历

    for (int i=0; i<array.count; i++) {

        NSLog(@"%@",array[i]);

    }
    //快速遍历

     for (id obj in array2) {

        

        NSUInteger loc = [array2 indexOfObject:obj];

         NSLog(@"%@,%ld",obj,loc);

       

    }

    

    

    [array2 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

          NSLog(@"%@,%ld",obj,idx);

        if (idx == 1) {

            *stop = YES;

        }

    }];

NSMutableArray 是动态数组不可使用语法@[] 来初始化

你可能感兴趣的:(结构体)