object-C 之 foundation--NSNumber & NSValue

本文介绍了如何使用Objective-C中的NSNumber和NSValue来封装和操作不同类型的数值和结构体数据,包括如何将整数、双精度浮点数、结构体等数据封装为Objective-C对象,以便于在Objective-C环境中进行数据的存储、传递和处理。

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

因为NSArray 和NSDictionary 只能用于存储oc数据对象,不能存储 int ,double ,float型,

那就用NSNumber转一下

也就是把int 等包装成NSNumber

NSNumber就是数字对象,我们可以使用NSNumber对象来创建和初始化不同类型的数字对象。

void number(){

    //int类型数据包装成NSNumber

   NSNumber *number=[NSNumbernumberWithInt:10];

    NSMutableArray *array=[NSMutableArrayarray];

    //添加到数组

    [arrayaddObject:number];

    

    //取出来还是NSNumber对象,不支持解包

   NSNumber *num1=[array lastObject];

    //将数据还原

   int num=[num1 intValue];      

}

NSValue是用来包装结构体的

//系统自带结构体

void value(){

    CGPoint point=CGPointMake(10, 10);

    //将结构体包装成一个对象

    NSValue *value=[NSValue valueWithPoint:point];

    NSMutableArray *array=[NSMutableArray array];

    //添加到数组

    [array addObject:value];

    NSValue  *val1=[array lastObject];

    //将数据还原

    CGPoint point2=[val1 pointValue];

    //系统自带结构体可以直接做对比

    BOOL result=CGPointEqualToPoint(point2, point);

    

    NSLog(@"result=%i",result);

}



//自定义结构体

typedef struct{

    int day;

    int month;

    int year;

}Date;




void value2(){

    Date date={21,3,2014};

    //void * 代表任何指针

    

    //根据结构体类型生成对应的类型描述字符串

    char *type =@encode(Date);

    NSValue *value=[NSValue value:&date withObjCType:type];

    

    //定义一个新的结构体接收数据

    Date date1;

    

    

    //取出包装好的结构体

    [value getValue:&date1];

    //不可以用比较,因为没有现成的比较函数

    NSLog(@"day:%i-month:%i-year:%i",date1.day,date1.month,date1.year);

    

    

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值