iOS开发-OC篇-NSSet,NSNumber

  

最近回顾了OC的一些基本知识,发现确实遗忘了很多重要的东西,今天整理了一些小的知识点,和大家分享一下。

  

iOS的集合对象不可以存储C语言基本类型,所有可以进行装箱拆箱,来进行OC对象操作。

1、NSNumber包装类

1>  普通初始化

NSNumber * num1 = [[NSNumber alloc] initWithInt:20];

NSNumber * num2 = [NSNumber numberWithChar:'a'];

2>字面量初始化

NSNumber * num3 = @300;

NSNumber * num4 = @123.2;

NSNumber * num5 = @'X';

3>变量初始化

int a = 29;

NSNumber * num5 = @(a);

4>NSNumber转基本数据类型

charValue,intValue,longValue,doubleValue

2、NSValue包装类

举例:

typedef struct {

    int age;

    char * name;

    char sex;

} SPerson;

SPerson person;

person.name = "dahuan";

person.age = 10;

person.sex = 'm';

//将一个结构体转换为NSValue对象,

//@encode(aType) 可以返回该类型的 C 字符串(char *)的表示

NSValue * value = [NSValue valueWithBytes:&person objCType:@encode(SPerson)];

SPerson person2;

//将一个NSValue对象转换为结构体

[value getValue:&person2];

NSLog(@"%s",person2.name);

NSLog(@"%d",person2.age);

NSLog(@"%c",person2.sex);

NSRange range = {12,2};

//常用结构体装箱

NSValue * rvalue =[NSValue valueWithRange:range];

//rangeValue将NSRange拆箱

NSLog(@"%@",NSStringFromRange([rvalue rangeValue]));

  

3、区分各种空值

nil是一个对象指针为空

Nil是一个类指针为空

NULL是基本数据类型为空。

NSNull空对象 是可以放在数组里的

4、NSSet用法

1>  NSSet初始化

NSSet * set = [[NSSet alloc] initWithObjects:@"a",@"b",@"c", nil];

NSSet * set1 = [NSSet setWithObjects:@"z",@"x",@"c", nil];

NSSet * set2 = [NSSet setWithArray:array];

2> 获取NSSet中任意对象

[set2 anyObject]

3> 是否包含某对象

[set2 containsObject:@"w"]

4> 是否有相同元素

[set intersectsSet:set2]

5、NSMutableSet用法

1> NSMutableSet初始化

NSMutableSet * set = [[NSMutableSet alloc] initWithCapacity:0];

2>  追加删除和NSMutableArray一样

3> 取两个NSSet的并集

[set unionSet:set2]

4> NSSet减去一样的元素

[set minusSet:set2]

5> 取两个NSSet的交集

[set intersectSet:set2]

6、NSDictionary用法

1> NSDictionary初始化

NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2", nil];

NSDictionary * dict2 = [NSDictionary dictionaryWithObjects:@[@"value1",@"value2"] forKeys:@[@"key1",@"key2"]];

NSDictionary * dict3 = @{@"key1":@"value1",@"key2":@"value2”};//字面量形式

2> 通过key值获取value值

[dict3 objectForKey:@(2)] //key值可以是任意对象

[dict3 valueForKey:@"key2"] //key值只能是NSString

dict3[@"key2"]  //字面量形式,建议使用

3> 获取字典中所有的key值

[dict3 allKeys]

4> 获取字典中所有的value值

[dict3 allValues]

原文地址:https://www.cnblogs.com/Horkly/p/5331170.html