oc的基本数据类型

OC数据类型

我们在OC阶段通常叫数值类型。 

oc的数值类型主要分为两种:typedef类型和对象类型;

以常用数据类型为例,C和OC数值类型的对比如下:


结构体类型 NSPoint…

我们先看看typedefy的结构体类型,他是复杂的数据类型,记住不是对象类型哦。

    NSPoint point = NSMakePoint(10, 10);//声明初始化一个点

    NSRect  rect  = NSMakeRect(0, 0, 100, 100);//矩形区域

    NSSize  size  = NSMakeSize(100, 100);//尺寸

    NSRange range = NSMakeRange(1, 2);//范围

NSValue

我们经常说oc我们只讲对象和类,在oc中我们参与操作的很多时候基本都是对象,但是如果我们的数据是基本数据类型或则复杂的数据类型,那我们怎么办呢—–使用封装。

在OC中我们可以使用NSValue(数值对象),主要用于复杂数据类型的对象化封装,当然也可以将简单数据类型封装为对象。这样我们就可以用他们操作了。

   NSPoint point = NSMakePoint(10, 10);//声明初始化一个点


    NSSize  size  = NSMakeSize(100, 100);//尺寸



  //封装数据

         NSValue *pointValue = [NSValue valueWithPoint:point];

         NSLog(@"%@", pointValue);

         NSValue *sizeValue = [NSValue valueWithSize:size];

         NSLog(@"%@", sizeValue);


         //解封装

         NSPoint piont1 = [pointValue pointValue];

         NSLog(@"%@",NSStringFromPoint(piont1));

         NSSize  size1  = [sizeValue sizeValue];

         NSLog(@"%@",NSStringFromSize(size1));

NSNumber

数值对象,用于简单数据类型的对象化封装;

  //封装基本数据

         NSNumber *intNumber = [NSNumber numberWithInt:12356789];

         NSLog(@"%@", intNumber);

         NSNumber *floatNumber = [NSNumber numberWithFloat:10.5];

         //解封装

         int a = [intNumber intValue];

         float b = [floatNumber floatValue];


         //快速

         NSNumber *fastNumber = @123;

         NSLog(@"%@",fastNumber);



NSNumber简写:

    [NSNumber numberWithChar:’X’] 可简写为  @’X’

    [NSNumber numberWithInt:123] 可简写为  @123

    [NSNumber numberWithBool:YES] 可简写为  @YES

补充:使用NSNumberFormatter对NSNumber与NSString转化

   //NSNumberFormatter工具类

         //第一步:创建一个格式转换器

         NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];

         //第二步:设置格式

         [formatter setNumberStyle:NSNumberFormatterSpellOutStyle];

         //转换数据

         NSNumber *number = [NSNumber numberWithInt:12345678];

         NSString *str1 = [formatter stringFromNumber:number];

         NSLog(@"%@", str1);

使用NSNumberFormatter可以快速做出如下格式:


NSString

对于前面的我们只能算开胃菜,如果你要学数据类型,重点还是NSString.

  • NSString是一个类,通过这个类实例化的对象为OC的字符串对象;
  • NSString实例的运算(增、删、查、改等),全部通过方法进行,无法进行任何四则运算;
  • 与C语言的char *类型字符串做一个对比:


NSString常用方法

1.各种初始化

        //最简初始化方式

         NSString *string1 = @"helli";

         //常规初始化

         NSString *string2 = [[NSString alloc] initWithString:string1];

         NSString *string3 = [[NSString alloc] initWithFormat:@"huang%d%@",123, @"abc"];

         //便利构造初始化

         NSString *string4 = [NSString stringWithFormat:@"%d", 123456];

2.字符串拼接 stringByAppend… stringByAppendingFormat

        //一般的字符串拼接方法

        NSString *appendString1 = [string1 stringByAppendingString:string2];

        NSLog(@"append = %@",appendString1);

       //格式字符串的拼接方法

        NSString *appendString2 = [string1 stringByAppendingFormat:@"%@",string2];

        NSLog(@"append2 = %@",appendString2);

        //初始化拼接

        NSString *appendString3 = [NSString stringWithFormat:@"%@%@",string1,string2];

        NSLog(@"append3 = %@",appendString3);

3.字符串截取 subString…

        NSString *newString = [NSString stringWithFormat:@"helloworld"];


        NSString *subString1 = [newString substringFromIndex:5];//[左闭右闭];

        NSLog(@"subString1 = %@",subString1);


        NSString *subString2 = [newString substringToIndex:5];//[左闭右开);

        NSLog(@"subString2 = %@",subString2);

        //low

        NSRange range = {3,3};

        NSString *subString3 = [newString substringWithRange:NSMakeRange(3, 3)];

        NSLog(@"subString3 = %@",subString3);

4.字符串查询 rangeOfString

        NSString *str1 = @"abcd123efg";

         //查找“123”

         NSRange range1 = [str1 rangeOfString:@"123"];

         if (range1.length == 0 && range1.location == NSNotFound) {

             NSLog(@"没有找到!");


           } else {

             NSLog(@"找到了!");

             NSLog(@"range = %@",NSStringFromRange(range1));


         }

5.字符串替换 stringByReplacing…

         NSString *str2 = [str1 stringByReplacingOccurrencesOfString:@"123" withString:@"ABC"];

         NSLog(@"%@", str2);

6.字符串比较 isEqualTo… compare

         NSString *str3 = @"abc";

         NSString *str4 = @"Abc";

         BOOL isEqual = [str3 isEqualToString:str4];

         if (isEqual) {

         NSLog(@"相等");

         } else {

         NSLog(@"不想等");

         }

        */

        /*NSOrderedAscending = -1L,升序,小于

          NSOrderedSame, 等于0

          NSOrderedDescending 降序 大于1

          */


        NSComparisonResult result = [str3 compare:str4];

         if (result == NSOrderedAscending) {

         NSLog(@"升序!");

         } else if (result == NSOrderedSame) {

         NSLog(@"相同!");

         } else {

         NSLog(@"降序!");

         }

8.数值转换 integerValue…

         NSString *str5 = @"123";

         NSInteger a1 = [str5 integerValue];

         NSString *str6 = [NSString stringWithFormat:@"%d", 123];

9.大小写转换 uppercaseString、lowercaseString、capitalizedString

         NSString *str7 = @"hello,world.";

         NSString *str8 = [str7 uppercaseString];

         NSLog(@"%@", str8);

         NSLog(@"%@", [str8 lowercaseString]);

         NSLog(@"%@", [str7 capitalizedString]);//首字母大写

NSMutableString可变字符串处理

  • NSString类型是不可变类型的字符串,OC中有专门的可变类型字符串NSMutableString;
  • NSMutableString继承自NSString,所以他可以直接使用NSString的方法,即可以直接作为不可变字符串使用;
  • 几乎所有NSString的运算方法,都同时对应着其可变类型的算法。
  • 一般NSString类型运算都是通过返回值给定一个新NSString对象,而NSMutableString的运算是直接改变原有字符串,所以返回值多为void.

       NSMutableString *mstr1 = [[NSMutableString alloc] initWithFormat:@"%d", 123];

         //便利构造初始化

         NSMutableString *mstr2 = [NSMutableString stringWithFormat:@"%@", @"abcd"];


         // 插入字符串

         [mstr2 insertString:@"123" atIndex:2];

         NSLog(@"%@", mstr2);

         // 删除

         [mstr2 deleteCharactersInRange:NSMakeRange(2, 3)];

         NSLog(@"%@", mstr2);


        //替换

        [mstr2 replaceCharactersInRange:NSMakeRange(0, 2) withString:@"00"];

        NSLog(@"mutable4 = %@",mstr2);

NSRange

C语言使用结构体、指针和数组来构造复杂的数据类型,而结构体和指针在iOS编程中至关重要,Cococa为我们准备了与字符串操作有关的结构体NSRange: 

NSRange:用来表示相关事物的范围  

typedef struct _NSRange  

{  

unsigned int location; //location表示起始位置 

unsigned int length; //length表示长度 

类似NSRange,OC复杂的数据类型还有NSPoint、NSSize、以及NSRect。

NSRange有三种创建方式:


比如要得到字符串@“helloRIMIOnline”中@“Online”字符串,需要一个起始位置为9,6个长度的范围,它可以有三种方式创建:

它可以有三种方式创建:

第一种调用函数可以这么写:

     NSRange range =NSMakeRange (9,6);

第二种直接给成员赋值:

    NSRange range

    range.location=9

    range.length=6;

第三种应用C语言的聚合结构赋值机制:

    NSRange range ={9,6};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值