黑马程序员--ios Foundation中几个类NSNumber,NSValue,NSSet

NSNumber 
NSNumber *intNumber = [[NSNumber alloc] initWithInt:5];
NSNumber *floatNumber = [[NSNumber alloc] initWithFloat:3.14f];
NSNumber *doubleNumber = [[NSNumber alloc] initWithDouble:6.7];
NSNumber *charNumber = [[NSNumber alloc] initWithChar:'A'];


NSNumber是一个类簇 表面看是一个类,但可以创建很多不同的对象
把一些基本的数据类型变成对象


转换成NSNumber后,两个整形比较大小,就需要使用方法
NSNumber *intNumber2 = [[NSNumber alloc] initWithInt:6];
BOOL ret = [intNumber isEqualToNumber:intNumber2];
NSLog(@"%d", ret);  

if ([intNumber compare: intNumber2] == NSOrderedAscending)
{
NSLog(@"<")
}
else if ([intNumber compare: intNumber2] == NSOrderedSame)
{
NSLog(@"==");
}
else if ([intNumber compare: intNumber2] == NSOrderedDescending)
{
NSLog(@">");
}


还原基本数据类型的数据:
NSLog(@"%d", [intNumber intValue]);
NSLog(@"%f", [floatNumber floatValue]);
NSLog(@"%f", [doubleNumber doubleValue]);

NSLog(@"%c", [charNumber charValue]);

NSSet是无序的
NSArray是有序的
NSSet *set = [[NSSet alloc] initWithObject:@"One", @"Two", @"Three", @"Four", nil];
NSLog(@"%@", set); //没有顺序
NSLog(@"%lu", [set count]);//对象个数
BOOL ret = [set containsObject:@"Two"]; //检测集合中是否含有Two这个对象

NSSet *set2 = [[NSSet alloc] initWithObject:@"One", @"Two", @"Three", @"Four", nil];
BOOL ret = [set isEqualToSet:set2];//判断两个集合是否相等

BOOL ret = [set isSubsetOfSet:set2];//判断是否是它的子串
//因为集合没有顺序,顺序不一样也没关系


//集合中的对象即使重复,也只是一个
//集合的遍历
NSSet *set = [[NSSet alloc] initWithObject:@"One", @"Two", @"Three", @"Four", @"Three" nil];
NSEnumerator * enumerator = [set objectEnumerator];
NSString *str;
while (str = [enumerator nextObject])
{
NSLog(@"%@", str);
}

NSValue 

是NSNumber 的父类 转变一些复杂的类
struct sct
{
int a;
int b;
}sctt;


NSValue *value = [[NSValue alloc] initWithBytes:&sctt objCType:@encode(struct sct)];
NSLog(@"%s", @encode(long)); //将类型转变成字符串,且尽量简单


NSValue也是一个类簇
//如何判断value是什么类型
if (strcmp(value.objCType, @encode(struct sct)) == 0)
{
NSLog(@"it is struct sct");  
}

//将value中存储的结构体传送到newValue中
struct sct newSctt;
[value getValue:&newSctt];

NSValue 用来装指针类型数据
char *p;
NSValue *value = [[NSValue alloc] initWithBytes:&p objCType:@encode(char *)];
char *q;
[value getValue:&q]; //变回指针类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值