您的位置:首页 > 产品设计 > UI/UE

OC中NSValue和NSNumber基本用法

2015-12-25 21:17 459 查看
#import <Foundation/Foundation.h>

typedef struct{
//字符串是一个数据类型,NSString是一个类,name是NSString得一个对象,在普通的数据类型里面不可以包含对象
//    NSString *name;
char name[20];
NSInteger age;
char sex;
CGFloat score;

}Student;

int main(int argc, const char * argv[]) {
@autoreleasepool {

/*
数值类:NSNumber/NSValue
功能:NSNumber:将普通数据类型转换成OC对象
*/
#pragma mark - 将普通数据类型转换为NSNumber类对象

//将普通数据类型转换为NSNumber类对象
NSNumber *initNumber1 = @25;
NSLog(@"initNumber1 = %@", initNumber1);

NSNumber *initNumber2 = [NSNumber numberWithBool:65];
NSLog(@"initNumber2 = %@", initNumber2);

NSNumber *initNumber3 = [[NSNumber alloc] initWithChar:'A'];
NSLog(@"initNumber3 = %@", initNumber3);

CGFloat test1 = 5.6;
NSNumber *initNumber4 = [NSNumber numberWithFloat:test1];
NSLog(@"initNumber4 = %@", initNumber4);

#pragma mark -将NSNumber类对象转换成普通数据了类型

//将NSNumber类对象转换成NSInteger数据类型
NSInteger number1 = [initNumber1 integerValue];
NSLog(@"number1 = %ld",number1);
//将NSNumber类对象转换成BOOL数据类型
BOOL number2 = initNumber2.boolValue;
NSLog(@"number2 = %d", number2);

/*
数值类:NSValue
功能:完成结构体和对象类型的互转
*/
#pragma mark - 将结构体转换成NSValue对象

//将系统的结构体变量转换成NSValue对象
NSRange testRange = {5,6};
NSValue *initValue1 = [NSValue valueWithRange:testRange];
NSLog(@"initValue2 = %@", initValue1);

//将自定义结构体变量转换成NSValue对象
Student stu = {"zhangsan", 25, 'm', 98.5};
NSValue *initValue2 = [NSValue valueWithBytes:&stu objCType:@encode(Student)];
NSLog(@"initValue2 = %@", initValue2);
Student stu1 = {"lishi", 26, 'm', 88.6};
NSValue *initValue3 = [[NSValue alloc] initWithBytes:&stu1 objCType:@encode(Student)];
//一般将结构体转换成对象是为了存储,在直接输出转换得到的对象的时候,由于没有重写NSValue里面的description所以输出是乱码
NSLog(@"initValue3 = %@", initValue3);

#pragma mark - 将NSValue类对象转换成数据结构

NSRange testRange2;
[initValue1 getValue:&testRange];
NSLog(@"testRange2.location = %ld, testRange2.length = %ld",testRange2.location, testRange2.length);

Student stu2;
[initValue2 getValue:&stu2];
NSLog(@"stu2.name:%s, stu2.age:%ld, stu2.sex:%c, stu2.score:%.2f", stu2.name, stu2.age, stu2.sex, stu2.score);

NSLog(@"Hello, World!");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: