nsnumber
int i=4;
float f=3.4;
NSNumber * n1=[NSNumber numberWithInt:i];
NSNumber * n2=[NSNumber numberWithFloat:f];
//把数字转成对象加到数组里
NSMutableArray * arr=[NSMutableArray arrayWithObjects:n1, nil];
[arr addObject:n2];
NSLog(@"%@",arr);
NSNumber * n3=arr[0];
NSNumber * n4=arr[1];
int a1=[n3 intValue];
float f1=[n4 floatValue];
NSLog(@"%.2f",a1+f1);
int y=11;//也可以直接加
[arr addObject:@(y)];
[arr addObject:@18];
NSLog(@"%@",arr);
nsValue
void s1()
{
//NSValue主要用来把指针,CGRect结构体等包装成oc对象,也可以存int ,float,char,id
CGPoint p1=CGPointMake(20, 50);//p1是cgpoint类型的结构体变量
NSMutableArray * arr=[NSMutableArray array];//创建数组
NSValue * pointVal=[NSValue valueWithPoint:p1];//把结构体转为nsvalue对象
[arr addObject:pointVal];
NSLog(@"%@",arr);
NSRect r1=NSMakeRect(100, 100, 100, 100);
[arr addObject:[NSValue valueWithRect:r1]];
NSLog(@"r1=%@",arr);
//从数组中取出r1的值
NSValue * r1Value=[arr lastObject];
NSRect r2=[r1Value rectValue];
NSLog(@"%@",NSStringFromRect(r2));
}
typedef struct D{
int year;
int month;
int day;
} MyDate;
int main(int argc, const char * argv[]) {
@autoreleasepool {
MyDate md={2015,5,7};
//@encode作用把MyDate类型生成一个常量字符串描述
NSValue * val=[NSValue valueWithBytes:&md objCType:@encode(MyDate)];
//定义一个数组,把val存储到数组中
// NSMutableArray * arr=[NSMutableArray arrayWithObject:val];
//从数组中取出来NSValue对象
//从对象中,取出结构体变量的值
//传入一个结构体变量的地址
MyDate tmd;
//getValue获取结构值,保存到结构体变量tmd
[val getValue:&tmd];
NSLog(@"%d,%d,%d",tmd.year,tmd.month,tmd.day);
}
return 0;
本文介绍如何在Objective-C中使用NSNumber与NSValue来处理基本数据类型与对象之间的转换,包括整数、浮点数及CGPoint等结构体的转换,并演示了如何将这些对象存储在NSMutableArray中。
9

被折叠的 条评论
为什么被折叠?



