基础类库:容器
1.NSArray
//类方法数组创建
NSArray *array1 = [NSArray arrayWithObject:@"obj"];
NSArray *array2 = [NSArray arrayWithObjects:@"obj1", @"obj2", @"obj3", nil];
NSArray *array3 = [NSArray arrayWithArray:array2];
//实例方法创建数组
NSArray *array4 = [[NSArray alloc] initWithObjects:@"AAA", @"bbb", nil];
NSLog(@"array4 :%@", array4);
//数组个数
NSLog(@"array3 count :%d", [array3 count]);
//访问元素
NSLog(@"obj at index :%@", [array2 objectAtIndex:2]);
//追加(返回新的array对象)
NSArray *array5 = [array3 arrayByAddingObject:@"ccc"];
NSLog(@"array5 :%@", array5);
//根据指定的字符串连接数组元素
NSString *joinString1 = [array5 componentsJoinedByString:@"|"];
NSLog(@"joinString :%@",joinString1);
//是否包含指定对象
NSLog(@"isContains :%d", [array5 containsObject:@"obj2"]);
//查找某个对象所在索引
NSLog(@"indexOfObject :%d",[array5 indexOfObject:@"obj3"]);
//最后一个元素
NSLog(@"lastObejct :%@", [array5 lastObject]);
//遍历数组
for(id element in array5) {
NSLog(@"element :%@", element);
}
2.NSMutableArray
添加元素.[mutableAarray addObject:@"hello"];
删除元素:[mutableAarray removeObject:@"hello"];
删除指定位置的元素[mutableAarray removeObjectAtIndex:2];
删除最后一个元素[mutableAarray removeLastObject];
删除所有元素.[mutableAarray removeAllObjects];
增加一些元素.[mutableAarray addObject:@"hello"];
[mutableAarray addObject:@"world"];
[mutableAarray addObjectsFromArray:array];
插入元素,指定位置.[mutableAarray insertObject:@"nihao" atIndex:2];
替换元素[mutableAarray replaceObjectAtIndex:2 withObject:@"ping"]
交换元素[mutableAarray exchangeObjectAtIndex:0 withObjectAtIndex:2];
快速便利for (id str in mutableAarray) {
NSLog(@"%@",str);
}
3.NSDictionary
//创建词典
NSDictionary *dictionary=[NSDictionary dictionaryWithObjectsAndKeys:@"wujy",@"name",@29,@"age",nil];
NSInteger Count=[dictionary count];
NSLog(@"词典的个数为%ld",Count);
//得到词典中的所有key
NSEnumerator *enumeratorkey=[dictionary keyEnumerator];
for (NSObject *obj in enumeratorkey) {
NSLog(@"key为:%@",obj);
NSLog(@"通过key找到value值为:%@",[dictionary objectForKey:obj]);
}
//得到词典中的所有value值
NSEnumerator *enumeratorvalue=[dictionary objectEnumerator];
for (NSObject *obj in enumeratorvalue) {
NSLog(@"value为:%@",obj);
}
//简便的方式创建 key排前面value排后面
NSDictionary *newDictionary=@{@"name":@"wujy",@"age":@29};
NSArray *keyArray=[newDictionary allKeys];
for (NSObject *obj in keyArray) {
NSLog(@"key的值为:%@",obj);
}
NSArray *valueArray=[newDictionary allValues];
for (NSObject *obj in valueArray) {
NSLog(@"value的值为:%@",obj);
}
//blocks插件
NSDictionary *blockDictionary=[NSDictionary dictionaryWithObjects:[[NSArray alloc] initWithObjects:@3,@15,@29,nil] forKeys:[[NSArray alloc] initWithObjects:@"IOS",@"work",@"age",nil]];
//遍历
[blockDictionary bk_each:^(id key, id obj) {
NSLog(@"使用blocks的key为:%@",key);
NSLog(@"对应的value为:%@",obj);
}];
//过滤 只在第一个符合条件时就停止
NSDictionary *matchDictionary=[blockDictionary bk_match:^BOOL(id key, id obj) {
BOOL select=[obj intValue]<10?YES:NO;
return select;
}];
NSLog(@"match符合的项为:%@",matchDictionary);
//过滤
NSDictionary *selectDictionary=[blockDictionary bk_select:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>10?YES:NO;
return select;
}];
NSLog(@"select符合的项为%@",selectDictionary);
//反向过滤
NSDictionary *rejectDictionary=[blockDictionary bk_reject:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>10?YES:NO;
return select;
}];
NSLog(@"reject符合的项为%@",rejectDictionary);
//对各个项进行修改
NSDictionary *mapDictinary=[blockDictionary bk_map:^id(id key, id obj) {
return [NSNumber numberWithInt:[obj intValue]+1];
}];
NSLog(@"map修改后的项为%@",mapDictinary);
//是否符合条件 返回bool
BOOL isSelected=[blockDictionary bk_any:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>20?YES:NO;
return select;
}];
NSLog(@"%d符合条件",isSelected);
//判断是否所有的项都符合这个条件
BOOL allSelected=[blockDictionary bk_all:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>20?YES:NO;
return select;
}];
NSLog(@"%d符合条件",allSelected);
//判断是否所有的项都不符合这个条件
BOOL noneSelected=[blockDictionary bk_none:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>50?YES:NO;
return select;
}];
NSLog(@"%d符合条件",noneSelected);
4.NSMutableDictionary
//创建一个nsmutabledictionary
NSMutableDictionary *mutableDictionary=[NSMutableDictionary dictionaryWithCapacity:3];
[mutableDictionary setObject:@"wujy" forKey:@"name"];
[mutableDictionary setObject:@"cnblogs.com/wujy" forKey:@"webName"];
[mutableDictionary setObject:@29 forKey:@"age"];
//得到词典中的所有key
NSEnumerator *enumeratorkey=[mutableDictionary keyEnumerator];
for (NSObject *obj in enumeratorkey) {
NSLog(@"key为:%@",obj);
NSLog(@"通过key找到value值为:%@",[mutableDictionary objectForKey:obj]);
}
//删除其中一个key
[mutableDictionary removeObjectForKey:@"name"];
NSLog(@"删除name的key以后值:%@",mutableDictionary);
[mutableDictionary removeAllObjects];
NSLog(@"删除所有以后,可变词典个数为%ld",[mutableDictionary count]);
//blocks
//过滤
NSMutableDictionary *newmutableDictionary=[NSMutableDictionary dictionaryWithDictionary:@{@"IOS":@3,@"work":@13,@"age":@29}];
[newmutableDictionary bk_performSelect:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>10?YES:NO;
return select;
}];
NSLog(@"过滤后的可变词典为(29,13)%@",newmutableDictionary);
//取反过滤
[newmutableDictionary bk_performReject:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>20?YES:NO;
return select;
}];
NSLog(@"取反过滤的可变词典为(13)%@",newmutableDictionary);
//修改各个项的结果
[newmutableDictionary bk_performMap:^id(id key, id obj) {
return @([obj intValue]+1);
}];
NSLog(@"修改后的可变词典为(14)%@",newmutableDictionary);
5.NSSet
集合:集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址;不过NSArray是有序的集合,NSSet是无序的集合。
集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度更快,但是它没有顺序。
1NSSet *set= [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];2[setcount];//返回集合中对象的个数
判断集合中是否拥有某个元素
1//判断集合中是否拥有@“two”2BOOL ret = [setcontainsObject:@"two"];
判断两个集合是否相等
1NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];2//判断两个集合是否相等3BOOL ret = [setisEqualToSet:set2];
判断set是否是set2的子集合
1NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five", nil];2//判断set是否是set2的子集合3BOOL ret = [setisSubsetOfSet:set2];
集合也可以用枚举器来遍历
1//集合也可以用枚举器来遍历2NSEnumerator * enumerator = [setobjectEnumerator];3NSString *str;4while(str =[enumerator nextObject]) {5……6}
通过数组来初始化集合(数组转换为集合)
1NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];2NSSet *set= [[NSSet alloc] initWithArray:array];
集合转换为数组
1NSArray * array2 = [setallObjects];
###6.NSMutableSet
1//可变集合NSMutableSet2NSMutableSet *set=[[NSMutableSet alloc]
init];3[setaddObject:@"one"];4[setaddObject:@"two"];5[setaddObject:@"two"];//如果添加的元素有重复,实际只保留一个
删除元素
1//删除元素2[setremoveObject:@"two"];3[setremoveAllObjects];
将set2中的元素添加到set中来,如果有重复,只保留一个
1//将set2中的元素添加到set中来,如果有重复,只保留一个2NSSet
* set2 = [[NSSet alloc] initWithObjects:@"two",@"three",@"four",
nil];3[setunionSet:set2];
删除set中与set2相同的元素
1[setminusSet:set2];
3、指数集合(索引集合)NSIndexSet
1//指数集合(索引集合)NSIndexSet2NSIndexSet * indexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1,3)];//集合中的数字是123
根据集合提取数组中指定位置的元素
1//根据集合提取数组中指定位置的元素2NSArray
* array = [[NSArray alloc]
initWithObjects:@"one",@"two",@"three",@"four", nil];3NSArray * newArray
= [array objectsAtIndexes:indexSet];//返回@"two",@"three",@"four"
4、可变指数集合NSMutableIndexSet
1NSMutableIndexSet *indexSet =[[NSMutableIndexSet alloc] init];2[indexSet
addIndex:0]3[indexSet addIndex:3];4[indexSet
addIndex:5];5//通过集合获取数组中指定的元素6NSArray *array = [[NSArray alloc]
initWithObjects:@"one",@"two",@"three",@"four",@"five",@"six",
nil];7NSArray *newArray = [array
objectsAtIndexes:indexSet];//返回@"one",@"four",@"six"
7.NSPointMap
......
网友评论