黑马程序员————Foundation框架_知识总结(下)

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
Foundation框架中常用的类
    /*
    NSString (NSMutableString)
    NSArray (NSMutableArray)
    NSSet (NSMutableSet)
    NSDictionary (NSMutableDictionary)
    */

一、NSArray与NSMutableArray

1.NSArray的创建

OC数组不能存放nil值
OC数组只能存放oc对象,不能存放非oc对象类型,如int、struct、enum等

    
    // NSArray是不可变数组,这个array永远是空数组
    NSArray *array = [NSArray array];
    
    // 创建单个对象
    NSArray*array2 = [NSArray arrayWithObject:@"jack"];
    
    // 创建多个对象,nil是数组元素结束的标记
    NSArray *array3 = [NSArray arrayWithObjects:@"jack",@"Rose" ,nil];
    
    // NSArray *array4 = [NSArray arrayWithObjects:@"jack",@"Rose",@"jim" ,nil];
    //快速创建一个NSArray对象
    NSArray *array4 = @[@"jack",@"Rose",@"jim"];
    
    // NSArray的元素个数
    NSLog(@"%ld",array3.count);
    
    // NSArray的元素访问
    NSLog(@"%@",[array3 objectAtIndex:1]);
    
    // 通过下标快速访问元素
    NSLog(@"%@",array3[0]);
    
2.NSArray的遍历

1)l用for循环遍历
    
    // for循环遍历
    Person *p = [[Person alloc] init];
    NSArray *array = @[p, @"jack"];
    for(int i = 0;i<array.count;i++)
    {
        NSLog(@"%@",array[i]);
    }

2)用for(id obj in 数组名)方式遍历
    // id obj代表数组的位置
    for(id obj in array)
    {
        // 找obj元素在数组中的位置
        NSUInteger i = [array indexOfObject:obj];
        NSLog(@"%@",obj);
    }

3)用enumerateObjectsUsingBlock遍历
<pre name="code" class="objc">    // 每遍历到一个元素,就会调用一次block,并且当前元素和索引位置当做参数传给block
    [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)
     {
         NSLog(@"%ld-%@",idx,obj);
         
         // 可以控制停止遍历
         if(idx == 1);
         *stop = YES;
    }];

3.NSMutableArray的创建与删除元素
 
 
1)创建NSMutableArray数组
<pre name="code" class="objc">    // 创建NSMutableArray
    NSMutableArray *array = [NSMutableArray array];
    NSMutableArray *array2 = [NSMutableArray arrayWithObjects:@"jake",@"Rose",@"jim", nil];
    
    // 添加元素
    [array addObject:[[Person alloc] init]];
    [array addObject:@"jack"];
    
    // 错误写法
    //[array addObject:nil];
    
    NSLog(@"%ld",array.count);
</pre>
NSArray没有addobject:id这个方法,不可调用

2)删除元素

    // 删除所有元素
    [array removeAllObjects];
    
    // 删除指定对象
    [array removeObject:@"jack"];
    
    // 删除第二个元素
    [array removeObjectAtIndex:1];
    
    NSLog(@"%@",array);

3)经典错误

    // @[]只创建不可变数组NSArray
     NSArray *array4 = @[@"jack"];
    
    // 错误写法,返回的是NSArray不可变数组,NSMutableArray没有@[]的快速创建方法
    NSMutableArray *array3 = @[@"jack",@"rose"];
    
    // 发送错误
    [array addObject:@"jim"];

二、NSSet与NSMutableSet

1.NSSet的创建
    NSSet *s = [NSSet set];
    
    // 创建NSSet
    NSSet *s2 = [NSSet setWithObjects:@"jack",@"Rose",@"jim", nil];
    
    // 随机取出一个元素
    NSSet *str = [s2 anyObject];
    
    // 打印s2元素个数
    NSLog(@"@ld",s2.count);
    
    // 输出元素
    NSLog(@"%@",str);

2.NSMutableSet的创建
    NSMutableSet *s = [NSMutableSet set];
    
    // 增加元素
    [s addObject:@"jack"];
    
    // 删除元素
    [s removeObject:@"jack"];

3.总结比较NSArray和NSSet的区别

共同点

1)都是集合,都能存放多个oc对象
2)本身都不可变,都有一个可变的子类
3)只能存放oc对象,不能存放非oc对象类型(基本数据类型:int、double、char等)

不同点

NSArray有顺序,NSSet没有顺序

三、NSDictionary与NSMutableDictionary

1.NSDictionary的创建

    NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
    
    id obj = [dict objectForKey:@"name"];
    
    NSLog(@"%@",obj);

    // 通过键集合数组和值集合数组创建
    NSArray *keys = @[@"name",@"address"];
    
    NSArray *objects = @[@"jack",@"北京"];
    
    NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
    
    id obj = [dict objectForKey:@"address"];
    
    NSLog(@"%@",obj);

    // 较为麻烦的创建方式
    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                          @"jack",@"name",
                          @"北京",@"address", nil];
    
    id obj = [dict objectForKey:@"name"];
    
    // 返回的是键值对的个数
    NSLog(@"%ld",dict.count);

    // 简单快速创建
    NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};
    
    // 简单访问oc数组里面的内容
    id obj = dict[@"name"];
    
    NSLog(@"%@",obj);

2.NSMutableDictionary的基本使用

    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    
    // 添加键值对
    [dict setObject:@"jack" forKey:@"name"];
    
    [dict setObject:@"北京" forKey:@"address"];
    
    // 为同一个key增加对象会覆盖之前的对象
    [dict setObject:@"Rose" forKey:@"name"];
    
    NSString *str = dict[@"name"];
    
    // 删除键值对
    [dict removeObjectForKey:@"name"];
    
    // 错误写法,@{}创建的是不可变字典,返回的是NSDctionary类型对象,是不可变的
    NSMutableDictionary *dict2 = @{@"name":@"jack"};

    [dict setObject:@"rose" forKey:@"name"];
    
     NSLog(@"%@",str);
    

3.NSDictionary 字典的遍历

1)第一种遍历方式

    NSDictionary *dict = @{
                           // 字典是无序的,不允许有相同的key,但循允许有相同的value
                           @"name" : @"jack",
                           @"name2" : @"jack",
                           @"name3" : @"jack",
                           @"address" : @"北京",
                           };
    // 取出所有key
    NSArray *keys = [dict allKeys];
    
    for(int i = 0;i<dict.count;i++)
    {
        NSString *key = keys[i];
        NSString *obj = dict[key];
        NSLog(@"%@-%@",key,obj);
    }
    

2)第二种遍历方式

    [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        NSLog(@"%@-%@",key,obj);
       // 只遍历一次就停止
       //*stop = YES;
    }];


四、NSNumber和NSValue

1.NSNumber

1)将基本数据类型转换成对象

<pre name="code" class="objc">    // 包装基本数据类型
    NSNumber *num = [NSNumber numberWithInt:10];
    
    // 放入集合对象
    NSDictionary *dict =@{
      
      @"name" : @"jack",
      
      @"age" : num
      
      };
    
    // 取出NSNumber对象
    NSNumber *num2 = dict[@"age"];
    
    // 转换成基本数据类型
    int a = [num2 intValue];
     NSLog(@"%d",a);


 
 
<pre name="code" class="objc">    // double类型转换
    NSNumber *n = [NSNumber numberWithDouble:10.3];
    int a1 = [n doubleValue];
    NSLog(@"%d",a1);


 2)将基本数据类型转成字符串 

    int a = 20;
    NSString *str = [NSString stringWithFormat:@"%d",a];
    
    // 把基本数据类型转成字符串
    [str intValue];
    
    // 把字符串转成基本数据类型
    //[@"20" intValue];
    
    NSLog(@"%d",[@"20" intValue]);

3)将基本数据类型转换成NSNumber对象(编译器特性)
    // @后面跟上一个数字自动转成number对象 @20
    [NSNumber numberWithInt:20];
   
    @10.5;  //double型
    @YES;   //BOOL型
    @'A';    //NSNumber对象
    @"A";   // NSString对象
    
    int age = 100;
    // 将age变量包装成NSNumber对象
    @(age);

2.NSValue

NSValue是NSNumber的父类

1)将结构体转为0c对象

<pre name="code" class="objc">    CGPoint p = CGPointMake(10, 10);
   
    // 结构体-->OC对象:将结构体包装成Value对象
    NSValue *value = [NSValue valueWithPoint:p];
    
    // 将Value转成对应的结构体
    [value pointerValue];

五、NSDate
 
 
1.NSDate的创建
<pre name="code" class="objc">    
    // 创建一个时间对象
    NSDate *date = [NSDate date];
    
    // 打印出的是0时区的时间
    NSLog(@"%@",date);

    // 使用时间间隔创建
    NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
    
    // 从1970年开始走过的秒数
    NSTimeInterval seconds = [date2 timeIntervalSince1970];
                              
    // 从date2到现在经过的时间
    [date2 timeIntervalSinceNow];

2.日期格式化类
 
 
<pre name="code" class="objc"><pre name="code" class="objc">    // 日期格式化类
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    
    // y 年 M 月 d 日
    // m 分 s 秒 H(24)时 h(12)时
    formatter.dateFormat = @"yyyy-MM-dd  HH:mm:ss";
    
    // 格式化后的日期转为字符串
    NSString *str = [formatter stringFromDate:date];
    
    NSLog(@"%@",str);

    // 将字符串转换成date
    NSString *time = @"2011/09/10 18:56";
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    
    formatter.dateFormat = @"yyyy/mm/dd HH : mm";
    
    NSDate *date = [formatter dateFromString:time];
    
    NSLog(@"%@",date);

------ Java培训、Android培训、iOS培训、.Net培训 、期待与您交流! -------
 
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值