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]; //变回指针类型