2015-10-15 iOS开发课程培训总结(五)
2015-10-15 iOS开发课程培训总结(五)
F_田鸡香也 发表于2年前
2015-10-15 iOS开发课程培训总结(五)
  • 发表于 2年前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 字典,枚举,结构体

最近在学习基础数据结构类型,感觉没有什么别的捷径,就是多运用多练习。

贴出今天的代码。

        /------------ 字典复习

创建不可变字典的三种方式

1、返回一个空字典

2、给一个存储空间、

3、返回一个字典,里面包含了一个不可变字典



        //[] 针对于定义不可变数组 {} 针对于定义不可变字典

        NSDictionary *reviseDict = @{ @"name" : @"jack", @"age" : @"10" };

        //C的写法

        NSLog(@"%@", reviseDict[@"name"]);

        //OC的写法

        NSLog(@"%@", [reviseDict objectForKey:@"name"] );

        //简便的写法

        //allValues 返回字典里所有的ValueallKeys 返回字典里所有的Key

        NSLog(@"%@, %@", [reviseDict allValues], [reviseDict allKeys]);

        

        //可变的字典 NSMutableDictionary

        //第一种定义方式 返回一个空的字典

        NSMutableDictionary *reviseMutableDict = [NSMutableDictionary dictionary];

        //第二种定义方式 返回一个空的字典 并且创建一个初始的存储空间

        NSMutableDictionary *reviseMutableDictI = [[NSMutableDictionary alloc]initWithCapacity:10];

        //第三种定义方式 返回一个字典 里面包含里了一个已创建过的不可变的字典集合

        NSMutableDictionary *reviseMutableDictII = [[NSMutableDictionary alloc]initWithDictionary:reviseDict];

        //追加一个键值对

        [reviseMutableDictII addEntriesFromDictionary:@{@"score":@"90"}];

        //修改:C的写法

        reviseMutableDictII[@"score"] = @"80";

        //修改:OC的写法

        [reviseMutableDictII setValue:@"70" forKey:@"score"];

        //删除 根据单个键删除

        [reviseMutableDictII removeObjectForKey:@"score"];

        //删除 根据多个键(数组)删除

        //[reviseMutableDictII removeObjectsForKeys:@[ @"name", @"age" ]];

        

        //返回数组集合里面包含字典里的所有的Key数据

        NSArray *keyArrayI = [reviseMutableDictII allKeys];

        //利用Key数组的有序性,返回字典里的Value

        for( int i = 0 ; i < [reviseMutableDictII count]; i++ ){

            NSLog(@"key: %@, value: %@",keyArrayI[i], reviseMutableDictII[ keyArrayI[i] ]);

        }

        


        

        //---------------- 枚举

        //C的枚举: 列举、集合、常数

        enum jack{

            age = 10,

            score = 90

        };

        //typedef 定义类型的别名

        //请注意在枚举不允许重复定义

        typedef enum {

            ageI = 10

        }jackI;

        

        //OC 常用枚举:是一个抽象类,它能枚举的形式把例如数组和字典等集合列举出来

        NSArray *enumArray = @[ @"1", @"2", @"3", @"4" ];

        NSDictionary *enumDict = @{ @"name" :@"jack" };

        

        //返回的是一个集合里的枚举数据

        NSEnumerator *enumrator = [enumArray objectEnumerator];

        NSEnumerator *enumratorI = [enumDict objectEnumerator];

        id arrayData;

        

        //返回集合的下一个对象 列举

        while( (arrayData) = [enumrator nextObject] ){

            NSLog(@"enumrator : %@", arrayData);

        }

        

        while( (arrayData) = [enumratorI nextObject] ){

            NSLog(@"enumrartorI : %@", arrayData);

        }

        

        /---------- 结构体

NSRange:前面是位置,后面是长度

NSRect: origin.x,origin.y,size.width,sze.height

NSPoint:前面是x后面是y

NSSize:前面是宽,后面是高



        //C的结构体

        //申明一个结构体,设置结构体里的属性

        //注意:结构体不能在初始赋值

        struct structI{

            //NSString *name;

        };

        

        //注意:在OCARC(自动引用计数)的情况下,不能设置结构体属性

        //struct structI structII= { .name = @"jack" };

        //NSLog(@"structII name: %@", structII.name );

        

        //OCNSRange NSRect NSPoint NSSize

        //结构体一般不需要指针表示

        //NSRange: 一般用于描述一个范围,通常用于字符串、对象查找

        //location: 起始位置 length: 长度

        NSString *string = @"1234567890";

        NSRange rangeII = NSMakeRange( 8, 2 );

        //通过字符串返回范围

        NSRange rangeI = [ string rangeOfString:@"90"];

        //通过范围返回字符串

        NSLog(@"%@", [string substringWithRange:rangeII]);

        NSLog(@"location: %li, length: %li", rangeI.location, rangeI.length );

        

        //NSPoint 用于描述一个坐标 x,y

        NSPoint pointI = NSMakePoint( 3.4, 1.2 );

        CGPoint pointII = NSMakePoint( 3.5, 1.3 );

        NSLog(@"x:%.2f, y: %.2f", pointI.x, pointI.y );

        NSLog(@"x:%.2f, y: %.2f", pointII.x, pointII.y );

        

        //NSSize 用于描述一个宽高,width,height

        NSSize sizeI = NSMakeSize( 300 , 120 );

        CGSize sizeII = NSMakeSize( 300.1 , 120.1 );

        NSLog(@"width : %.2f , height: %.2f", sizeI.width, sizeI.height);

        NSLog(@"width : %.2f , height: %.2f", sizeII.width, sizeII.height);

        

        //NSRect 用户描述一个坐标以及宽高

        NSRect rectI = NSMakeRect( 1, 2.1, 100, 200.1);

        NSLog(@"x: %.2f , y: %.2f , width: %.2f , height: %.2f",

              rectI.origin.x, rectI.origin.y, rectI.size.width, rectI.size.height);

        

        NSLog(@"----复习-----");

        

        NSRange newRange=NSMakeRange(2, 3);

        NSRange range2={2,3};

        NSLog(@"%li--%li",newRange.length,newRange.location);

        NSPoint newPoint=NSMakePoint(2, 1);

        NSLog(@"%.2f--%.2f",newPoint.x,newPoint.y);

        NSSize newSize=NSMakeSize(23, 40);

        NSLog(@"%.2f----%.2f",newSize.width,newSize.height);

        NSRect newRect=NSMakeRect(1, 2, 34, 45);

        NSLog(@"%.2f---%.2f---%.2f--%.2f",newRect.origin.x,newRect.origin.y,newRect.size.width,newRect.size.height);


        

        

        //NSDate类型

        

        //    定义一个NSDate类型

        NSDate *date1=[[NSDate alloc]init];

        //    定义一个NSDate类型并设置值,dateNSDate的一个类方法,用来获取当前时间

        NSDate *date=[NSDate date];

        NSLog(@"now time %@",date);

        //    设置时间格式-----NSDate转换为NSString

        NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];

        //    一般12小时制是hh来表示小时,24小时制用HH

        [dateFormatter setDateFormat:@"yyyyMMdd HH:mm:ss"];

        NSString *nowtime=[dateFormatter stringFromDate:date];

        NSLog(@"%@",nowtime);

        //----NSString转换为NSDate

        //    定义将要转化的日期

        NSString *stringTime=@"20121225 21:22:21";

        //    定义一个时间类型的对象

        NSDate *dateNew=[[NSDate alloc]init];

        //    NSString转换为NSDate

        dateNew=[dateFormatter dateFromString:stringTime];

        NSLog(@"========>%@",dateNew);

    

        


        //    NSValueNSNumber的父类,可以将结构体包装放进数组里

        

        //    回顾NSNumber

        //    直接定义一个NSNumber

        NSNumber *newNumber=@1;

        //    定义一个NSNumber类型对象的方法----此处可以看做把基本元素包装NSNumber类型(注意:数组里不能直接放int等类型,用NSNumber“包装后或者用字符串表示的形式才可以放入数组)

        NSNumber *Number2=[[NSNumber alloc]initWithFloat:23];

        //    NsNumber类型转换为float类型

        float floatNum=[Number2 floatValue];

        NSLog(@"%f",floatNum);

        //    定义NSValue的方法

        NSValue *valueNum=[[NSValue alloc]init];

        //    NSRange转换为NSValue类型

        NSValue *newValue=[NSValue valueWithRange:newRange];

        //    数组不能直接装入结构体类型的对象,经过NSValue”包装可以放入数组里

        NSValue *pointValue=[NSValue valueWithPoint:newPoint];

        NSArray *valueArray=@[newValue,pointValue];

        NSLog(@"%@",valueArray);

        NSLog(@"%@",valueArray[0]);

    }

    

    

    //  ----------  NSNull--------

    

    

    //    定义一个NSNull类型的对象

    NSNull *null=[NSNull null];

    NSLog(@"%@",null);

    //    将这个对象放到数组里,创建一个空数组

    NSArray *nullArray=@[null];

    NSLog(@"%@",nullArray);

    



共有 人打赏支持
粉丝 0
博文 17
码字总数 12463
×
F_田鸡香也
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: