天天看点

OC基础学习——基本数据类型和复杂数据类型

一、NSNumber类

1、作用:NSNumber能够将c语言中的基本数据类型转化为oc中的对象

2、实例:

  //1.用对象方法将整型数据转化为oc中对象(比如整型,其他基本数据类型方法一样)

       NSNumber *intNum = [[NSNumberalloc]initWithInt:5];

       //2.用类方法

       NSNumber *intNum1 = [NSNumbernumberWithInt:5];

//3.判断两个对象是否相等,其返还值是bool类型

       int result = [intNumisEqualToNumber:intNum1];

       NSLog(@"%d",result);//.将判断结果打印

//4.比较,其返还值类型为  

NSComparisonResult{NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};

        NSComparisonResult nsResult = [intNumcompare:intNum1];

       if(nsResult ==NSOrderedSame)

        {

            NSLog(@"intNum = intNum1");

        }

       elseif (nsResult ==NSOrderedAscending)

        {

            NSLog(@"intNum < intNum1");

        }

        elseNSLog(@"intNum > intNum1");

//5.如果将其还原为基本数据类型

       int a  = [intNum1intValue];

二、NSValue(其实是NSNumber的父类)

作用:将复杂的数据类型转化为对象(比如结构体,指针)

实例:

1、

  //1.转化

       CGPoint point1;

       NSValue *pointValue1 = [NSValuevalueWithPoint:point1];

       //2.还原

       CGPoint newPoint1 ;//.先定义新的变量来接受还原的数据

        [pointValue1getValue:&newPoint1];

//.指针如何转化

       int c =11;

       int *new = &c;

//.参数1是指针的地址&new,参数2指针的@encode(指针类型)

       NSValue *ne = [NSValuevalue:&newwithObjCType:@encode(int*)];

       int * b ;//定义一个新的指针

        [negetValue:&b];

三、NSSet(集合)和NSMutableSet NSIndexSet

 //.NSSet(集合)与NSArry的区别是NSSet是无序的,数组是有序的

        NSSet *set = [[NSSetalloc ]initWithObjects:@"yangjie",@"wangrong",@"goubi",@"rilgou",nil];

        //.NSSet中得元素可以是任意对象,它也是存贮对象的地址

//        NSSet *set1 = [NSSet setWithObjects:<#(id), ...#>, nil]

       NSLog(@"%@",set);

       NSLog(@"%lu",[setcount]);(获取集合的元素的个数)

       BOOL ret = [setcontainsObject:@"yangjie"];

       NSLog(@"%d",ret);

        //1.判断两个集合是否相等

//        [set isEqual:<#(id)#>]

        //2.判断某个集合是否是其子集合

//        [set isSubsetOfSet:<#(NSSet *)#>]

        //3.集合的遍历

       NSEnumerator *rator = [setobjectEnumerator];

       id obj;

       while(obj=[ratornextObject])

        {

           NSLog(@"%@",obj);

        }

        //.集合的初始化,有多种方法

//        NSSet *set1 = [[NSSet alloc]initWithObjects:<#(id), ...#>, nil]

        //_______NSMutableSet_________

        NSMutableSet *set1 = [[NSMutableSetalloc]init];

        [set1addObject:@"one"];

        [set1 addObject:@"two"];//.如果添加元素相等,实际上只保留一个

       NSLog(@"%@",set1);

        //2.shan出元素

        [set1removeObject:@"one"];

          NSLog(@"%@",set1);

       NSSet *set2 = [[NSSetalloc]initWithObjects:@"dfd",@"dfsd",@"dfsfs",nil];

        [set1unionSet:set2];//将set2中得集合全部添加到set1中

       NSLog(@"%@",set1);

        [set1minusSet:set2];//.将set2从set1中删除

       NSLog(@"delete以后%@",set1);

        //__________NSIndexset___________指数集合(索引)

        NSIndexSet *indexset = [[NSIndexSetalloc]initWithIndexesInRange:NSMakeRange(2,2)];

       NSArray *array = [[NSArrayalloc]initWithObjects:@"qwer",@"fsdfs",@"fads",@"fsfdf",nil];

       NSArray *new = [arrayobjectsAtIndexes:indexset];

       NSLog(@"%@",new);

四、NSData

        NSString *str =@"hello world";

        //.将字符串对象转换为nsdata字节流

       NSData *data =

        [str dataUsingEncoding:NSUTF8StringEncoding];

       //.将其还原

        NSString *newStr = [[NSStringalloc]initWithData:dataencoding:NSUTF8StringEncoding];

       NSLog(@"%@",newStr);