zoukankan      html  css  js  c++  java
  • 从头开始-07.Foundation框架常用结构体

    一、Foundation框架常用结构体NSRangeCGRange、NSPointCGPoint、NSSizeCGSize、 NSRectCGRect 的使用

     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. 相关的其他方法

    //判断结构体NSPointCGPoint、NSSizeCGSize、 NSRectCGRect 包含的值是否相同的方法
        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 是动态数组不可使用语法@[] 来初始化

  • 相关阅读:
    Openstack Swift 添加和删除 custom metadata name,通过 libcurl
    Windows Error Reporting, Mini dump 2, Full dump 1
    英语邮件结尾时常用的20个句子
    QT 编译时 Warning: The name 'layoutWidget' (QWidget) is already in use, defaulting to 'layoutWidget1'.
    QVBoxLayout 不能移动
    学生管理系统
    使用python发送邮件
    ElasticSearch 基础 2
    ElasticSearch 基础 1
    Linux系统命令
  • 原文地址:https://www.cnblogs.com/mekor/p/3950601.html
Copyright © 2011-2022 走看看