OC基本数据类型与对象之间的转换方法

本文介绍了Objective-C中Foundation框架提供的集合类,包括NSArray、NSSet、NSDictionary等,并详细说明了如何通过NSNumber和NSValue来存储基本数据类型及结构体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Foundation框架中提供了很多的集合类                   

如:NSArrayNSMutableArrayNSSetNSMutableSetNSDictionaryNSMutableDictionary是这些类只能存放OC对象类型的数据


2.如果要存放基本数据类型,必须先将基本暑假类型包装成对象类型然后再用集合类进行存储,OC中提供的包装类.NSNumberNSValue。其中NSNumber继承于NSValue


3.NSNumber主要针对于基本数据类型的包装,NSValue主要针对结构体进行包装


4.将包装成NSNumberNSValue对象类型后存放在数组中,然后从集合类中取出NSNumberNSValue对象再转换成为基本数据类

例:

    //int基本数据类型包装成NSMumber对象类型

    int a =5;

    NSNumber *a = [NSNumber alloc]initWithInt:a];

            

5.系统中定义:

    + (NSNumber *)numberWithChar:(char)value;

    + (NSNumber *)numberWithInt:(int)value;

    + (NSNumber *)numberWithUnsignedInt:(unsignedint)value;

    + (NSNumber *)numberWithLong:(long)value;

    + (NSNumber *)numberWithUnsignedLong:(unsignedlong)value;

  等常用的方法

可以看出虽然NSNumber提供了很多将基本数据类型转换成为NSNumber对象的方法,但是这样写起来太麻烦,Xcode编译器新特性支持@[(基本数据类型)]方式,可以直接将基本数据类型转换称为NSNumber对象类型。可以看出将int,double等基本数据类型在直接转换就是在前面加@,如果是变量就用()将变量括起来;


6.NSValue的基本使用

            

    // 创建点坐标结构体

    CGPoint point = CGPointMake(20,20);


    // 将结构体转换成为NSValue对象

    NSValue *pointValue = [NSValue valueWithPoint:point]; 


    // NSValue对象存放到数组中

    NSArray *array =@[pointValue];


    // 从数组中取出pointValue对象

    NSValue *value = array[0];


    // NSValue对象转换成为结构体

    CGPoint point2 = [valuepointValue];

            

    // 输出:转换成基本类型结构体point2的值:

    //第一种方式:将结构体先转换为字符串然后打印

     NSString *str =NSStringFromPoint(point2);

     NSLog(@"%@",str);//输出 {20,20}


     //第二种方式:依次取出对应的值打印

     // NSLog(@"%f %f",point2.x,point2.y);输出 20.000000 20.000000



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值