iOS培训-oc类中常用数据类型总结

今天是第三天,基本上讲的内容都是基础的东西,不过确实不错,总结的很好,mark一下,为以后参考。有关的知识点:NSPoint,NSSize,NSRect,NSRange,NSValue

,NSNumber,NSString,NSArray,NSMutableArray,NSDictionary,NSMutableDictionary,NSSet,NSUserDefaults,以上不难,但是对于初学者是个好的参考资料。


1. 基本数据类型:NSPointNSSizeNSRectNSRange,转化为NSValue对象方可存放在NSArray,NSSet中,NSValue主要用来封装自定义的数据结构,可以是系统框架提供的CGRect/CGPoint/CGSize等数据结构,也可以是自己定义的struct。

<span style="white-space:pre">	</span>//1.基本数据类型:NSPoint,NSSize,NSRect,NSRange
        NSPoint point = NSMakePoint(10, 10);//用于坐标
        NSSize size = NSMakeSize(10, 10);//用于大小
        NSRect rect = NSMakeRect(0, 0, 10, 10);//point and size即方块区域
        NSRange range = NSMakeRange(3, 5);//起始位为3,长度为5

        //注:因为像NSArray,NSSet的数组里边只存放对象,所以使用NSValue将数据类型转化为对象,那么就可以存在数组里了
        //使用NSValue将任意数据类型封装为对象
        NSValue *pointValue = [NSValue valueWithPoint:point];//将Point类型封装为对象类型
        NSValue *sizeValue = [NSValue valueWithRect:rect];
        NSValue *rectValue = [NSValue valueWithRect:rect];
        NSValue *rangeValue = [NSValue valueWithRange:range];
        //注:NSValue对象不能使用,必须解封装的基本数据类型才可以使用
        //解封装
        point = [pointValue pointValue];
        size = [sizeValue sizeValue];
        rect = [rectValue rectValue];
        range = [rangeValue rangeValue];



2.  NSNumber主要是用来封装ANSI C内置的数据,比如char,float,int等等,和上述一样转化为对象,才可存放在数组,字典中。

 //2.数值类型:NSNumber对象初始化
        NSNumber *integerNumber = [NSNumber numberWithInteger:123];
        NSNumber *floatNumber = [NSNumber numberWithFloat:123.456];
        NSNumber *boolNumber = [NSNumber numberWithBool:YES];
        //解封装
        NSInteger integer = [integerNumber integerValue];
        CGFloat f = [floatNumber floatValue];
        BOOL b = [boolNumber boolValue];


3. NSData数据,当我们需要把一些信息写入到文件里或发送到网络上,我们需要把这些数据转换下,变成纯粹的0、1字符流;以下是NSString和NSData相互交换实例

<span style="white-space:pre">	</span>NSString * str = @"hello, world!";
        NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding]; //NSString转换成NSData类型
        NSString * newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];<span style="font-family: Arial, Helvetica, sans-serif;">//</span><span style="font-family: Arial, Helvetica, sans-serif;">NSData</span><span style="font-family: Arial, Helvetica, sans-serif;">转换成NSString类型</span>


4. 以下是NSString得相关操作

<span style="white-space:pre">	</span>//1.字符串初始化
        NSString *str1 = [[NSString alloc] initWithFormat:@"LV%d%@",123,@"名"];//拼接
        NSString *str2 = [[NSString alloc] initWithString:str1];//str1,str2内容一样,地址不一样
        //便利构造方法初始化字符串
        NSString *str3 = [NSString stringWithString:str2];
        NSString *str4 = [NSString stringWithFormat:@"%@ %d",str3,123];
        //最简单的方式
        NSString *str5 = @"123";
        
        //2.字符串拼接
        NSString *str21 = @"123";
        NSString *str22 = @"456";
        NSString *str23 = [str21 stringByAppendingString:str22];
        NSLog(@"%@",str23);
        NSString *str24 = [str23 stringByAppendingFormat:@"%d",123];
        NSLog(@"%@",str24);
        
        //3.字符串截取 subString...(substringFromIndex,substringToIndex,substringWithRange)
        NSString *str31 = @"abcdefgh";
        NSString *str32 = [str31 substringFromIndex:4];
        NSLog(@"%@",str32);
        
        //4.字符串查询 rangeOfString
        NSRange range41 = [str31 rangeOfString:@"de"];
        if (range41.length==0 && range41.location == NSNotFound) {
            NSLog(@"没有找到!");
        } else {
            NSLog(@"找到了!");
        }
        
        //5.字符串替换 stringByReplacing...
        NSString *str51 = [str31 stringByReplacingCharactersInRange:range41 withString:@"DE"];
        NSLog(@"%@",str51);
        NSString *str52  = [str31 stringByReplacingOccurrencesOfString:@"de" withString:@"DE"];
        NSLog(@"%@",str52);
        
        //6.字符串比较 isEqualTo...
        NSString *str61 = @"abC";
        NSString *str62 = @"abc";
        BOOL isEqual = [str61 isEqualToString:str62];
        if (isEqual == YES) {
            NSLog(@"相等!");
        }else{
            NSLog(@"不相等!");
        }
        NSComparisonResult result = [str61 compare:str62];
        if (result == NSOrderedAscending) {
            NSLog(@"升序!");
        }else if(result == NSOrderedSame){
            NSLog(@"相等!");
        }else{
            NSLog(@"降序!");
        }
        
        //7.字符串长度获取
        NSInteger len = [str61 length];
        
        //8.字符串数值转换 integerValue...
        NSString *str81 = @"123";
        NSInteger i = [str81 integerValue];//将字符串转化为整形
        NSString *str82 = [NSString stringWithFormat:@"%ld",i];//将整形转化为字符串
        
        //9.字符串大小写转换 uppercaseString、lowercaseString、capitalizedString
        NSString *str91 = @"hello123world!";
        NSString *str92 = [str91 uppercaseString];//转化为大写字母
        NSLog(@"%@",str92);
        NSString *str93 = [str91 capitalizedString];//每个单词首字母都要大写
        NSLog(@"%@",str93);//输出Hello123World!



5. NSMutableString可变字符串相关处理

<span style="white-space:pre">	</span>//1.插入字符串
        NSMutableString *str10 = [NSMutableString stringWithFormat:@"%d",123];
        [str10 insertString:@"456" atIndex:3];
        NSLog(@"%@",str10);//输出123456
        //2.删除
        [str10 deleteCharactersInRange:NSMakeRange(2, 1)];
        NSLog(@"%@",str10);//输出12456



6. NSArray相关处理

<span style="white-space:pre">	</span>//1.NSArray初始化
        //一般初始化:alloc+initWithObjects;//最常用的初始化方法
        NSArray *arr1 = [[NSArray alloc] initWithObjects:@"hello",[NSValue valueWithPoint:NSMakePoint(10, 20)],[NSNumber        <span style="white-space:pre">	</span><span style="font-family: Arial, Helvetica, sans-serif;">numberW</span><span style="font-family: Arial, Helvetica, sans-serif;">ithBool:YES], nil];</span><span style="white-space:pre">
</span>        //便利构造初始化:arrayWithObjects;
        NSArray *arr2 = [NSArray arrayWithObjects:[NSString stringWithFormat:@"%d",123],[NSValue valueWithSize:NSMakeSize(10, 10<span style="white-space:pre">	</span>)],arr1 , nil];
        //最简单的初始化
        NSArray *arr3 = @[@"123",@"456",@"Hello",arr2,@"4"];
        
        //2.NSArray取值:objectAtIndex、lastObject、firstObject
        NSString *str41 = [arr3 objectAtIndex:1];
        NSString *str42 = [arr3 firstObject];//取数组中第一个值
        NSString *str43 = [arr3 lastObject];//取数组中最后一个值
        
        //3.NSArray增加:arrayByAddingObject
        NSArray *arr31 = [arr3 arrayByAddingObject:[NSValue valueWithSize:NSMakeSize(10, 10)]];
        NSLog(@"%@",arr31);
        
        //4.NSArray查询:indexOfObject
        NSUInteger index = [arr31 indexOfObject:@"4"];
        if (index == NSNotFound) {
            NSLog(@"没有找到!");
        }else{
            NSLog(@"%lu",index);
        }
        
        //5.NSArray排序:sorted...
        NSArray *arr51 = @[@"c",@"a",@"g",@"f"];
        NSArray *arr52 = [arr51 sortedArrayUsingSelector:@selector(compare:)];//系统自带排序
        NSArray *arr53 = [arr51 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {//自定义排序
            return NSOrderedDescending;
        }];



7.  NSMutableArray 可变数组相关处理

    #pragma mark - NSMutableArray可变数组
        //可变数组运算:(可变数组可以对自身进行修改)
        NSMutableArray *marr1 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",nil];//数组里边可以有其他类型对象
        
        //1.增:addObject:(增方法一定不能添加空对象)
        [marr1 addObject:@"4"];
        NSLog(@"%@",marr1);
        
        //2.删:removeObject、removeObjectAtIndex:
        [marr1 removeObject:@"1"];
        NSLog(@"%@",marr1);//输出:(2,3,4)
        [marr1 removeObject:@"4" inRange:NSMakeRange(0, 2)];//在一定范围内删除
        NSLog(@"%@",marr1);//输出:(2,3,4)
        
        //3.查:indexOfObject:
        BOOL ui = [marr1 indexOfObject:@"2"];
        NSLog(@"%d",ui);//输出:0
        
        //4.改:replaceObjectAtIndex:withObject:
        [marr1 replaceObjectAtIndex:2 withObject:@"abc"];
        
        //5.排序:sort...
        NSMutableArray *marr2 = [NSMutableArray arrayWithObjects:@"1",@"5",@"3",nil];
        [marr2 sortUsingSelector:@selector(compare:)];
        
    #pragma mark - 数组遍历(注意:不能在遍历的同时修改增删可变数组)
        //1.for循环
        for (int i = 0; i<[marr2 count]; i++) {
            NSLog(@"%@",[marr2 objectAtIndex:i]);
        }
        
        //2.快速枚举
        for (id var in marr2){
            NSLog(@"%@",var);
        }
        
        //3.测试:1-100放到数组里边
        NSMutableArray *marr3 = [[NSMutableArray alloc] init];
        for (int i = 0; i<100; i++) {
            [marr3 addObject:[NSString stringWithFormat:@"%d",i]];
        }



8. NSDictionary的相关操作

    #pragma mark - NSDictionary字典
        //1.一般初始化:alloc+initWithObjectsAndKess:
        
        //2.便利初始化:dictionaryWithObjectsAndKeys:
        NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"key1",@"abc",@"key2",nil];
        NSLog(@"%@",dic1);
        
        //3.字典快速生成
        NSDictionary *dic2 = @{@"key1":@"1",@"key2":@"abc",@"key3":dic1};
        NSLog(@"%@",dic2);
        
        //4.查询一个对象:objectForKey:(常用方法)
        NSString *dicStr = [dic2 objectForKey:@"key2"];
        NSLog(@"%@",dicStr);
        
        //5.取出字典的所有的键
        NSArray *allKs = [dic2 allKeys];
        NSLog(@"%@",allKs);
        
        //6.取出所有对象:allValues
        NSArray *allVs = [dic2 allValues];
        NSLog(@"%@",allVs);



9.  NSMutableDictionary 可变字典相关操作

    #pragma make - NSMutableDictionary可变字典
        //1.遍历构造
        NSMutableDictionary *dicc = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"1", @"key1",@"2",@"key2",@"3",@"key3",ni<span style="white-space:pre">	</span>l];
        NSLog(@"%@",dicc);
        
        //2.增:setObject:forKey:
        [dicc setObject:@"4" forKey:@"key4"];
        NSLog(@"%@",dicc);
        
        //3.删:removeObjectForKey:
        
        //4.查:objectForKey:
        
        //5.改:setObject:forKey:(覆盖指定key下对应的值)

   #pragma make - 字典遍历
        NSArray *keys = [dicc allKeys];
        
        //1.for循环遍历
        for (int i = 0; i<[keys count]; i++) {
            NSLog(@"%@",[dicc objectForKey:[keys objectAtIndex:i]]);
        }
        
        //2.快速枚举
        for(id var in dicc){
            NSLog(@"%@",[dicc objectForKey:var]);
        }

        //3.1-100 key1=1 key2=2 ......



10. NSSet的相关操作

    #pragma make - NSSet
        NSSet *set1 = [NSSet setWithObjects:@"1",@"2",@"3",@"4", nil];
        NSLog(@"%@",set1);
        
        NSArray *array = @[@"1",@"2",@"3",@"4"];
        //将有序数组转化为无序数组
        NSSet *set2 = [NSSet setWithArray:array];
        NSLog(@"%@",set2);
        //将无序转化为有序
        NSArray *array2 = [set2 allObjects];
        NSLog(@"-------%@",array2);



11.简单数据持久化
    #pragma make - 简单数据持久化
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
//        [defaults setBool:YES forKey:@"isOpen"];//保存一个bool型的数据
//        [defaults setInteger:99 forKey:@"level"];//保存一个Int型的数据
//        [defaults setObject:@"this si hello!" forKey:@"text"];
        BOOL isOpen = [defaults boolForKey:@"isOpen"];
        NSInteger level = [defaults integerForKey:@"level"];
        NSString *text = [defaults objectForKey:@"text"];
        NSLog(@"level=%ld text=%@ isOpen=%d",level,text,isOpen);












  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值